私の経験では、ロギングはコードの適切なテストとデバッグの代わりとして使用されます。プログラマーは、「このコードが機能するかどうか確信が持てないので、ログ メッセージを散りばめて、失敗したときにログ メッセージを使用して問題の原因を突き止めることができる」と考えています。
何も考えずにログ メッセージをばらまくのではなく、各ログ メッセージをソフトウェアのユーザー インターフェイスの一部と考えてください。DBA、ウェブマスター、またはシステム管理者向けのユーザー インターフェイスですが、それでもユーザー インターフェイスの一部です。すべてのメッセージは何か役に立つはずです。メッセージは、行動を促すものであるか、ユーザーが使用できる情報を提供する必要があります。メッセージが役に立たない場合は、ログに記録しないでください。
各メッセージに適切なログ レベルを指定します。メッセージが実際の問題を説明しておらず、有用なステータス情報を提供していない場合、そのメッセージはデバッグにのみ役立つ可能性が高いため、DEBUG または TRACING メッセージとしてマークしてください。通常の Log4J 構成では、これらのメッセージはまったく書き込まれません。問題をデバッグしているときにのみ書き込むように構成を変更します。
メッセージは、頻繁に発生する例外によるものであると述べています。すべての例外がプログラムのバグや、プログラムの操作上の問題を示しているわけではありません。プログラムのバグを示すすべての例外をログに記録し、それらのスタック トレースをログに記録する必要があります。多くの場合、これでバグの原因を突き止めることができます。心配している例外がバグによるものである場合は、間違った問題に焦点を合わせていることになります。つまり、バグを修正する必要があります。例外がプログラムのバグを示していない場合は、スタックトレースをログに記録しないでください。スタックトレースは、問題をデバッグしようとしているプログラマにのみ役立ちます。例外が問題をまったく示さない場合は、ログに記録する必要はまったくありません。