セキュリティレビューとかアーキテクチャレビューはしてるけど
実運用されるアプリケーションの実装や運用を五年以上やってない
話題の中心は開発者であるが
開発者は運用者というロールを想定するべき
そういう問題領域がある事を知ってはいるが
太一に知識や経験が不足している為、議論出来ない
正直、余り興味も無い
障害を切り分け易い事と動作を理解し易い事は共通する部分もあるが厳密に一致している訳では無いので、
動作を理解し易いログの出し方については
これ以降話題にしない
出力がある程度制限された環境から得たログを元に開発環境では、その問題を調査する為に出力制御をするだろう
ほぼ問題が解決している状況を除くとログを何らかの形でフィルタリングしながら解析をしなければならない
ログの出力制御を設定する作業者とログ出力コードの実装者の対象に対する理解が適切に合致していない場合、
名前空間のみをフィルタリングの基準として採用していると解決に必要な工数が大きくなりがち
そこで、名前空間やレベルに加えてログ解析の為に新たな項目を追加してはどうだろう?
開発者によるユニットテストでは洗い出されにくく、
結合テスト環境や本番環境と言った多くのモジュールが統合される環境で起きる障害
もしくは、その様な環境に至るまでに発見されなかったとしても、許容されるべき問題
経験則的な色合いが強いがこういった部分におけるログ出力を特別扱いしても良いのではないか?
プロジェクト固有の状況を鑑みれば、もっと他にもそういう場所はある筈
出力項目の一部として固定的な文言を出力する事で解析し易くする
2012-05-20 15:34:35.431 INFO LIFECYCLE x.yy.zzz.contract.Aaaa initialized 2012-05-20 15:34:36.861 INFO x.yy.zzz.contract.Aaaa begining of transaction. 2012-05-20 15:34:37.971 DEBUG x.yy.zzz.impl.Bbbb main prcess. 2012-05-20 15:34:37.971 DEBUG BOUNDARY x.yy.zzz.impl.Cccc {"id":11122111,"name":"taichi"} entry data. 2012-05-20 15:34:38.851 DEBUG x.yy.zzz.impl.Dddd after process. 2012-05-20 15:34:39.851 INFO x.yy.zzz.contract.Aaaa end of transaction. 2012-05-20 15:34:40.241 INFO LIFECYCLE x.yy.zzz.contract.Aaaa disposed.
アドホックなSQLでフィルタリングすると大量のログを簡単に扱える
Windows環境ならMS-Access使うと更に便利