大容量のログファイルから、期間やログレベル、文言を指定して、必要なログイベントを抽出するCUIツールです。
指定のログフォーマットで出力されているログファイルから 期間、ログレベル、文字列、正規表現 を指定して、マッチするログイベントだけのファイルを作成します。
- 対応しているログフォーマット
-
apache access log形式
-
サンプル
127.0.0.1 - name [10/Oct/2000:13:55:36 +0900] "GET /apache_pb.gif HTTP/1.0" 200 2326
-
-
「タイムスタンプ ログレベル メッセージ」形式
-
タイムスタンプ
- 日付
- 「yyyy/MM/dd」, 「yy/MM/dd」
- 「yyyy-MM-dd」, 「yy-MM-dd」
- 「yyyyMMdd」
- 日付時刻セパレータ
- 「 (半角スペース)」
- 「T」
- 時刻
- 「なし」
- 「HH:mm」, 「HH:mm:ss」
- 「HH:mm:ss.SSS」, 「HH:mm:ss,SSS」
- 日付
-
タイムゾーン
- 「なし」
- 「+0900」
- 「+0900:」
-
ログレベル
- 前提
- タイムスタンプとの区切りが「半角スペース」
- ログレベルを「半角スペース」か「大カッコ」でくくっている
- 形式
- 任意(TRACE~ERROR、FINEST〜FATAL etc)
- 前提
-
サンプル
2016-11-06 12:17:53.985 DEBUG 15765 [ main] m.s.t.l.i.p.BaseLayerSuperType : START validate 2016-11-06 12:17:54.022 DEBUG 15765 [ main] m.s.t.l.i.p.BaseLayerSuperType : END validate 2016-11-06 12:17:54.022 ERROR 15765 [ main] m.s.t.l.s.LogFilterServiceTest : [error.validate]妥当性チェックエラーが発生しました。 LogFilterServiceInput.timeFilterValueFrom:日時に変換できません。 設定値=unmatched date format LogFilterServiceInput.outputCharset:サポートされていない文字コードです。 設定値=NotExist2 LogFilterServiceInput.inputCharset:サポートされていない文字コードです。 設定値=NotExist LogFilterServiceInput.inputFilePath:存在しないパスです。 設定値=/path/to/input
-
-
- 配布アーカイブ(tar.gz)を、ログファイルが配置されているサーバの任意のディレクトリに展開
# 配置ディレクトリで展開
cd ${DIR_PARENT}
tar xvfz ./logfilter_*.tar.gz
rm -f ./logfilter_*.tar.gz
# 最新版にシンボリックリンクを作成
ln -s ${DIR_PARENT}/logfilter_${VERSION} ${DIR_PARENT}/logfilter
# 実行権限を付与
chmod 755 ./logfilter/bin/*.shcd ${DIR_PARENT}
./logfilter/bin/logfilter.sh -h-
設定をまとめたファイルを指定+コマンドで上書きして実行することができます。 下記のように、ルーティン作業を簡素化することも可能です。
- 設定ファイルで ログレベル:WARN以上 に絞る設定をしておき、コマンドで対象ログファイルを指定する
- 設定ファイルで 対象ログファイル を指定しておき、コマンドで期間を今日に絞る
-
特定の絞り込み条件を指定したコマンドをalias登録しておき、パスだけ指定して動かすこともできます。
- JRE 1.6 ~