悩めるSEの雑記です

日々思いつくがままです

gawkとログ

トラブル調査のためにログ解析を行った。

対象プラットフォームはColdFusion。ColdFusionのログは「メッセージ」しか出力できない。その中に必要な情報を詰め込んで出力する。

一般的にログを出す場合には、エクセルで閲覧したり、場合のよってはDBに取り込みやすいようにCSVフォーマットで出力することが多かった。しかし今回の場合、肝心の情報は「メッセージ」の中に詰め込むのでこんな形式にしていた。

(エラーログ.メッセージ)
{項目名}:XXXXXX / {項目名}:XXXXXX / ・・・・


実際に解析していて問題がいくつかあった。

  1. 発生箇所を特定する情報がJavaスタックトレースしかない
  2. ログ全体とメッセージ部、個別にデリミタがある
  3. デリミタに「/」を使ったので、URLやパス情報をログに含めると被ってしまう


ログの整形をするためにgawkで久しぶりにフィルタを作った。本格的に勉強したことは無いので、昔に作ったソースを探し、それもとに何とかすっきりした感じに整形はできた。しかし、クライアントを特定する情報が不足していたので、セッションIDとユーザ番号をログに追加した。すると・・・どうもうまくいかない。

awkのソースはあっちもこっちも正規表現だらけでわかりづらい。もう少し落ち着いて整理してやればよかったのですがちょっと失敗してしまいました。トライ&エラーを繰り返して結局やりきれず。

システムをリリースした後、トラブルシューティングの大切な情報源となるログ、後回しにしたり、適当に扱いがちなってる。反省。私の設計チェックリストに追加しました。