適切なログ出力のための10のTips
Java Programming, Learn Java Online with the Java Code Geeks | Java developers resource center - Java, Scala, Groovy, Androidで、アプリケーション開発時のログ出力に関する参考になりそうな記事が掲載されていました。Javaに関する記事ですが、他の言語の場合にも当てはまると思います。
10 Tips for Proper Application Logging | Java Code Geeks
以下、各項目の概要です。元記事は丁寧に解説されているし、コード例や便利なツールなども紹介されているので、少々長いですが読む価値があるかと思います。
- 適切なツールを使う
- ロギングレベルを設定するのを忘れない
- ロギングレベルを適切に設定すれば不必要なログの出力を抑制できる
- どのケースでどのレベルを使うべきなのかなどの指針を紹介
- 何を記録しているのかを把握する
- 後からログファイルを読んだとき、問題の解決に役立つ内容が記録されていなければ意味が無い
- 副作用を無くす
- ログ出力はアプリケーションの振舞いに影響を与えるべきではない
- アプリケーションの振舞いに影響するような処理を同時に(ついでに)行わない
- パフォーマンスの低下にも注意する
- 簡潔に、かつ適切に概要を記録する
- ログにはデータと合わせて、そのデータに関する説明を記録する
- 問題の説明だけでデータが記録されていないのもダメ
- マジックナンバーを使った不可解なログは論外。ログは実際にプログラムが行っていることを示すべき
- パターンをチューニングする
- どんな情報を記録するかをよく検討し、パターン化しておく
- ツールを利用して定義を作っておくと便利
- メソッドの引数と戻り値を記録する
- 外部システムとの通信を記録する
- 外部のシステムと連携する場合には、その呼び出しメッセージなどを記録しておく
- SOAPやREST、HTTPヘッダなど
- 例外を適切に記録する
- 例外の記録はフレームワークに任せる
- 例外の処理方法としてログ出力を使わない(それ自身は例外の対処になっていない)
- 適切な例外の出力例
- 読みやすく、解析しやすい形式で記録する
- ログはソースコードと同様に読みやすく、かつ理解しやすいように記述するべき
- 大量のログが出力される場合には、ツールによって解析しやすい形を意識することも重要