2

Tomcatからログをフェッチし、それをクラウドリソースに送信するスクリプトがあります。すべてがうまく機能しますが、Tomcatがログをローテーションするときに問題が発生します。

ログがローテーションされると、接頭辞として日付が付けられます(ログは毎日ローテーションされます)。スクリプトは30分ごとに実行されるだけなので、ローテーションするとログが見落とされる可能性があります。例では、静的な名前でログをフェッチしているためですlogfile.log

回転する前のファイルは次のようになります。

logfile.log

回転すると、次のようになります。

logfile.log.2012-10-09

この問題を取り除く方法はありますか?

編集:

私のスクリプト:

cp /tomcat/logs/$logname $fileName 
gzip $fileName
s3cmd put $fileName.gz s3://x.x.x.x.x/$folderName

前もって感謝します。

4

1 に答える 1

4

ログをバックアップする最善の方法は、ログファイルのmtimeに従ってチェックを行うことだと思います。

最後のバックアップのログファイルをどこかに保存してから、ローテーションされたログファイルと現在のログファイルの両方を確認できます。最後に保存されたmtimeよりも新しいローテーションされたログファイルがある場合は、現在のログファイルをローテーションされたログファイルに追加してからバックアップできます。現在のログファイルのみが新しい場合は、バックアップするだけです。

ファイルのmtimeは、次の方法で取得できます。LC_ALL=C stat logfile.log | grep '^Modify' | cut -d: -f2-、またはunixタイムスタンプは次の方法で取得できます。date "+%s" --date="$(LC_ALL=C stat logfile.log | grep '^Modify' | cut -d: -f2-)"

于 2012-10-12T13:41:25.983 に答える