ファイル名に今日の日付を含むログファイルへのパイプ

ファイル名に今日の日付を含むログファイルへのパイプ

以下は、「pushtolog」がパイプからテキスト行を受け取り、名前に今日の日付を含むファイルに書き込むユーティリティである仮想コマンドラインです。

tail -F mylatestlogfile.log | grep "ERROR" | pushtolog -d /tmp/myerrors/ -f yyyy-MM-dd -r errors -e log

2017年2月17日に実行すると、出力はファイルに書き込まれます。

/tmp/myerrors/errors.2017-02-17.log

2017年2月18日の真夜中にファイルが閉じられ、追加の出力がファイルに書き込まれます。

/tmp/myerrors/errors.2017-02-18.log

移行は自動的に行われます。関連するログ行の数が少ないため、パフォーマンスはそれほど重要ではありません。

このプログラムを実行するGNU / Linuxサーバーには、最小限のユーティリティセットがインストールされています。 Python 2がインストールされており、ユーティリティを直接作成できます。この手順を実行する前に、タスクを実行できるツールがあるかどうか、またはタスクを実行するための慣用的な選択肢があるかどうかを尋ねることをお勧めします。

logrotateを使用することはできますが、1つのステップですべての操作を実行するのは「簡単」に見えるので、毎回回転を実行するのを避けたいと思います。

マルチログターゲットログファイルを切り替える同様の問題を解決しているようですが、日付が変更されたときではなく、ログファイルがいっぱいになったときに発生します。 rootアクセス権がないため、パッケージマネージャを実行できません。私が持っている権限でソースから正常に構築できるかどうか調べていません。それが明らかに作業のためのツールであれば、私はこのオプションを選択します。

ベストアンサー1

私はAwkの機能を使用して、各評価の今日の日付(ログの各行)を含むファイル名の設定を評価し、次のように終了しました。

tail -F mylatestlogfile.log | grep "ERROR" | awk '{print >> "/tmp/myerrors/errors." strftime("%Y-%m-%d") ".log"}'

おすすめ記事