質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

ロギング

コンピュータにおけるロギングとは、コンピュータプログラミングにおける形跡を記憶することをさします。これは、システムのアクティビティの理解や、問題究明のために監査証明を残す目的でおこなわれます。

Q&A

2回答

6262閲覧

JSON形式で出力したログの閲覧方法

Auxo

総合スコア34

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

ロギング

コンピュータにおけるロギングとは、コンピュータプログラミングにおける形跡を記憶することをさします。これは、システムのアクティビティの理解や、問題究明のために監査証明を残す目的でおこなわれます。

0グッド

0クリップ

投稿2020/01/22 02:36

編集2020/01/22 06:50

ログライブラリに依存する話しではないと思いますが、例えばmonologでJSON形式でログを出力した場合、デフォルトのJsonFormatterを利用すると以下のようなJSON形式のログが出力されます。

JSON

1{"message":"ログメッセージ1","context":[],"level":200,"level_name":"INFO","channel":"myLog","datetime":{"date":"2020-01-21 22:19:25.220271","timezone_type":3,"timezone":"Asia/Tokyo"},"extra":[]} 2{"message":"ログメッセージ2","context":[],"level":200,"level_name":"INFO","channel":"myLog","datetime":{"date":"2020-01-21 22:19:29.884730","timezone_type":3,"timezone":"Asia/Tokyo"},"extra":[]} 3{"message":"ログメッセージ3","context":{},"level":200,"level_name":"INFO","channel":"myLog","datetime":{"date":"2020-01-21 22:23:29.169131","timezone_type":3,"timezone":"Asia/Tokyo"},"extra":[]} 4

見ていただくとわかるとおり、行単位で見るとJSON形式であるものの、ログファイル全体でみれば正しいJSON形式とは言えません。
その為、単純にViewer(macOS向け)で閲覧したり、ATOMのJSON整形ツールに読み込ませても当然ですがエラーとなります。

JSON形式のログを採用している方にお伺いしたいのは、こういった問題(つまり行単位では正しいJSONであるものの、ログファイル全体を読む込みと正しいJSONではないという事)に対してどのような方法でログの閲覧や管理をされているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

https://github.com/brocode/fblog

fblogを使えば、json-logをprettyに表示することができます。また、SQLのようにそれぞれのkeyについてフィルタをかけることもできるので、生ログにgrepをかけるよりも便利にデバッグ等にログを活用することが可能です。

投稿2021/01/10 08:56

manji0

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

何かViewerツールか、コンバーターを用意する必要があると思います。
一行毎に読んで、一つのJSONオブジェクトにコンバートするか、一行ごとに成型してプリントしてはどうでしょう。

投稿2020/01/22 06:01

mmaeda

総合スコア269

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Auxo

2020/01/22 07:17 編集

ご回答ありがとう御座います。 一つの方法として仰るとおり、一度出力されているログファイルを別途作成したツールで加工(各行を配列として扱うように再成形)する事は試したのですが、開発中に都度その手続きを行いながらデバッグを進めるのも面倒と感じまして、他の方はどのようにしているのかな?と疑問を感じた次第です。 運用開始後であれば仲介するツール経由でログを集約し、閲覧時はさらに別なツールで、という流れも踏むのですが。 やはりJSON形式で出力する以上は、都度、何か別なツールで再加工するしかないのかもしれません。
mmaeda

2020/01/22 07:19

デバッグ用に、JSON 出力と、TEXT 出力を併用してはどうでしょう。プリント部分を拡張できれば良いのですが?
Auxo

2020/01/27 01:44

追加でのご回答ありがとうございます。 拡張自体はそれ難しくない事と、両方出力する事自体も問題ないのですが、結果的にJSON形式でのViewerであれば構造が一目で見やすいというメリットをどうすれば簡単に得られるかという点が気になっております。 結構JSON形式のログを進める記事は多いのですが、その管理や活用は唯一の例としてfluentd経由での活用が記事になっている程度のもので、結局の所は開発フェーズではあまり有効な管理方法がなくみんなそれほど活用していないので?と感じております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問