2012-03-14 10 views
1

00:00:01毎に新しいログを作成したいです(毎回新しい日)。Apache httpd rotatelogs:毎日新しいファイルを作成できますか?

rotatelogsの問題は、新しいログを作成する前にログの最大サイズを正確に、または正確に回転時間を秒単位で指定できることです。正確な時刻はであり、回転はです。

彼らは "cronjobs"について話しますが、私はそれを得ません。可能であれば誰かに説明してください、もしそうなら、例を挙げてください。

後はrotatelogsユーティリティのヘルプですありがとうございました:

/#は/ opt /のhttpd/binに/引数のrotatelogsの--help数が正しくありません 使用します。/ opt/"|は/ opt /のhttpd/binに/のrotatelogs /いくつか/ 86400"

のTransferLogを:|のhttpd/binに/ rotatelogsのは[-l] [-f] {}これを追加

[UTCからの分をオフセット]

または

のTransferLog "|は/ opt /のhttpd/binに/のrotatelogs /いくつか/ 5M"

のhttpd.confに。生成される名前は/some/where.nnnnです.nnnn は、ログが名目上始まるシステム時刻です(NB: のローテーション時間を使用する場合、時刻は常にローテーションの倍数になるので、同期することができます)。それを使ったcronスクリプト)。 の終了時、またはファイルサイズに達すると、新しいログが開始されます。/manual page for rotatelogsのこのセクションによると #

答えて

1

期間として86400を設定
rotationtime 
      The time between log file rotations in seconds. The rotation 
      occurs at the beginning of this interval. For example, if the 
      rotation time is 3600, the log file will be rotated at the 
      beginning of every hour; if the rotation time is 86400, the log 
      file will be rotated every night at midnight. 

は、あなたが(新しいファイルが毎日深夜に開始)やりたいだろう。

「真夜中」をUTCではなくローカルタイムゾーンに設定する場合は、-lオプションも使用します。

クロニクルが必要な場合は、1日の期間を希望し、深夜とは異なる時間にしたい場合です。 logrotate(外側のapache)のようなより一般的なツールが一般的にそのために使用されます。

+0

正確に '3600'で' 18:30'で始めると、次のログは '19:30'で始まるはずです。私が得られないことは、**この区間の初めに**。そして、彼らが提供する例は助けにはならない: '86400'と' 3600' ...あなたが正確に '3660'か '86401'とか –

+0

私はサーバーの開始時間は何の役割も果たさないと思います。回転時間として3600が指定されている場合、サーバーは3600でunixエポック(1/1/70 00:00からの秒数)を除算し、この除算の残りがゼロのときに新しいログファイルに切り替えます1時間ごとの)。 3660が与えられれば、1/1/70 00:00 –

+1

から70mnごとに起こるでしょう。あなたが言うことが正しければ(おそらくそうです)、ドキュメントは悪いです。私は見て、いくつかのテストケースを書いて、次に私のブログでこれを説明する記事を作る。あなたの答えをありがとう! ** '=)' ** –

関連する問題