■Logging指針


ここではLogを埋め込む際の指針となる部分を解説します。
コードの中にlogを埋め込む際にはLogがどのように使われるかと考慮する必要があります。一般的にLogは人間がプログラムの動作を知るためにあります。単純なことですが重要なことです。
もし、実際に運用されているUltraMonkey-L7があった場合、UltraMonkey-L7が正常か異常かを知る手段はLogが一番最初になります。プログラムの挙動を外部から知る手立ての第一はLogなのです。
ただし、Logを出力することが非常に重いことも忘れてはいけません。パフォーマンスとLogが出力する情報は両立しません。詳細にプログラムの動作を知りたい場合には詳細にLogを出力する必要がありますが、詳細に出力すればするほどプログラムのパフォーマンスは劣化します。
このため一般的にはLogLevelと言うものを定義します。
正常に動作中はパフォーマンスが最重要課題ですから最小限のLog出力を行います。もし、UltraMonkey-L7を管理している人が疑問となる挙動を見つけた場合、手動でLogLevelを変更し、詳細なLogを取得する…と言うのが一般的なLogの出力する詳細情報とパフォーマンスの折り合いがつく部分です。
ここではプログラムがLogを埋め込む際にどのような情報を入れるべきか、それぞれのLogLevelごとに解説を入れていきます。

LEVEL

DEBUG デバッグに耐えられるだけの詳細な情報を出力する。

INFO あらゆる情報。プロセス起動や終了など。

WARN 警告情報。処理には問題は無いが全体として注意する場合。たとえば接続できるリアルサーバが存在しなかった場合など。

ERROR エラー情報。

FATAL プロセスの継続が不可能な場合などに出力する情報。設定ファイルが見つからないや、l7vsadmがl7vsdに接続できない場合など。

サンプル

[DEBUG C/C++] C/C++向けのdebug log sample
[DEBUG java] java向けのdebug log sample

[INFO C/C++] C/C++向けのinfo log sample
[INFO java] java向けのinfo log sample

[WARN C/C++] C/C++向けのwarn log sample
[WARN java] java向けのwarn log sample

[WARN C/C++] C/C++向けのerror log sample
[ERROR java] java向けのerror log sample

[FATAL C/C++] C/C++向けのfatal log sample
[FATAL java] java向けのfaral log sample