システムにおける「ログ」の扱いは、思ったより重要度が高いのですが、システム設計時点ではなかなか掘り下げて設計されずに積み残ってしまいがちな機能です。アプリケーション開発者の気まぐれなデバッグログではなく、システムに発生しえる様々な障害(機能停止だけでなく、パフォーマンス障害、セキュリティ、ほか)の発生と後での障害切り分けに必要な情報をログに残すのは大変な作業です。 ロギングライブラリを使用する場合、開発中に、ログ採取ポイントを特定し、かつログ出力カテゴリやレベル、出力内容を設計し実装している必要があります。もしこの作業が十分でないと、後付でアプリケーションのソースコードをログ出力のためだけに修正し再配布しなければならなくなります。 C/C++なんかでは、アプリケーション側でログ出力文を埋め込まなくても、関数の呼び出しなどをトレース情報として残す仕組みを入れることがありました。Javaでも同