.png)
次のようなログを解析できるシンプルな Unix/Linux ログ パーサーを使用したり、作成したことがある人はいますか。
timestamp log_message \n
メッセージを順序付けし、タイムスタンプを解析して返します。
- すべてのメッセージ
- 特定の日付以降のメッセージ (--since)
- 特定の日付以前のメッセージ (--until)
- --since、--until の組み合わせ
このようなものを書くこともできますが、定型文があるかどうかはわかりません。これは、私が計画している自動レポート作成にうまく適合すると思います。
答え1
を見てみましょう私が書いたこのPythonプログラムそれがあなたが探しているものに近いか、またはあなたのニーズに適応できるかを確認します。
答え2
たとえ見つかったとしても、それを信頼できるかどうかはわかりません。たとえば、タイムスタンプは事前にわからないため、DD-MM-YYYY と MM-DD-YYYY を区別できる唯一の方法は、xx または zz と xx-zz-YYYY のいずれかが 12 より大きくなるまで先読みすることです。他にも問題があることは確かです。
言語の標準文字列から datetime ライブラリを使用して日付形式指定子を明示的に指定できるため、独自のコードを書く方がはるかに簡単で信頼性が高くなると思います。
たとえば Python の場合:
import re
from datetime import datetime
line_regex = re.compile(
r'''
\[
(?P<day> \d{1,2} )
/
(?P<month> \w{3} )
/
(?P<year> \d{4} )
:
(?P<hour> \d{2} )
:
(?P<minute> \d{2} )
:
(?P<second> \d{2} )
\s
(?P<timezone> -?\d{4} )
\]
''', re.VERBOSE)
new_entry['time'] = datetime.strptime(
parsed_line['day'] +
parsed_line['month'] +
parsed_line['year'] +
parsed_line['hour'] +
parsed_line['minute'] +
parsed_line['second']
, "%d%b%Y%H%M%S"
)
存在するフォーマットを判別しようとするモジュール/ライブラリが必要な場合は、Perlの1つのオプションは次のとおりです。日付::解析。
答え3
私がこれまでに見つけた、まともな解決策はsyslog-ngデータベースへのログ記録 (この時点では単純な SQL クエリに縮小されます) - すべてを集中的にログ記録していると仮定すると、これによってそれほど大きな負担がかかることはありません。
(ここに明らかな利点と明らかな注意点を挿入してください)