Log4J、Slf4J、およびその他のJavaのロギングフレームワークには、ロギング用に2つの「開発者」レベルがあります。
- デバッグ
- トレース
説明が明確であるため、DEBUGの機能を理解しています。
DEBUGレベルは、アプリケーションのデバッグに最も役立つ詳細な情報イベントを指定します。
しかし、TRACEレベルは、そのユースケースについてあまり明確ではありません。
TRACEレベルは、DEBUGよりもきめ細かい情報イベントを指定します
(ソース:log4J JavaDoc)
これは、TRACEの使用方法や使用時期を教えてくれません。興味深いことに、これはsyslog標準で定義されている重大度レベルではありません。TRACEとDEBUGの違いをグーグルで検索すると、「DEBUGを使用してください。TRACEもあります」と返されるようです。TRACEレベルの特定のユースケースが見つかりませんでした。私が見つけた最高のものは、レベルの存在のメリットについて議論しているこの古いwikiページでした。
これは、建築家として、私の頭の中にたくさんの旗や質問を投げかけます。若い開発者が私のアーキテクチャにTRACEを追加するように頼んだら、私は彼に質問を投げかけました:
- DEBUGではなくTRACEで記録する必要がある情報の例は何ですか?
- その情報を記録することで、どのような特定の問題を解決できますか?
- これらの例では、DEBUGレベルではなくTRACEレベルでログを明確に区別するログ情報のプロパティは何ですか?
- その情報がログインフラストラクチャを通過する必要があるのはなぜですか?
- 単に使用するのではなく、ログジャーナルにその情報を保持することの利点は何
System.out.println
ですか? - デバッガーよりもログを使用する方が良いのはなぜですか?
- 単に使用するのではなく、ログジャーナルにその情報を保持することの利点は何
- TRACEレベルでのロギングの標準的な例は何でしょうか?
- 例のDEBUGではなく、TRACEレベルでログを記録することで得られた具体的な利点は何ですか?
- なぜこれらのゲインが重要なのですか?
- 逆に:DEBUGではなくTRACEでログを記録することで回避した問題は何ですか?
- これらの問題を他にどのように解決できますか?TRACEレベルでのロギングが他のソリューションよりも優れているのはなぜですか?
- TRACEレベルのログステートメントを製品コードに残すべきですか?どうして?
しかし、ほとんどの主要なフレームワークに存在することを考えると、何かに役立つと思いますか?それで... TRACEは何のためにあり、DEBUGと何が違うのですか?