毎日logrotateとサイズ?


40

logrotate configが「size」および「daily」パラメーターで指定されている場合、どちらが優先されますか?これはどこに文書化されていますか?これらのローテーションはブールOR演算として発生するようにしたいと思います。つまり、ログが1日経過している場合はローテーションされ、特定のサイズよりも大きい場合はローテーションも行われます。ただし、logrotateは現在「size」ディレクティブのみを使用しており、「daily」ディレクティブを無視しているようです。Logrotateは、1時間ごとに実行されるように設定されています。OSはlinux、Red Hat、Debianの派生物です。

また、最初に「毎日」、次にファイルの先頭から「サイズ」を指定しています。順序が重要かどうかはわかりませんが、いずれにしても、構成ファイルの最初に来る必要があります...

ありがとう!



>ローカル定義はグローバル定義を上書きし、後の定義はlogrotate 3.8.7のマンページから以前の定義を上書きします
ジョンボブジョー

回答:


62

sizeディレクティブが使用される場合、logrotateはdailyweeklymonthly、およびyearlyディレクティブを無視します。これは、man logrotateコマンドを実行したときのドキュメントでは明確ではありません。しかし、実際に確認することができ、このようないくつかの任意のブログ投稿で言及されています。

logrotateのmanページによると、timeディレクティブと組み合わせて使用​​できる唯一のサイズディレクティブであるminsizeと呼ばれるディレクティブがあります。しかし、それはまだあなたが望むものではありません。使用MinSizeプロパティをして、毎日、本質的には、こう述べています。毎日のログを回転させるが、彼らは、サイズが少なくとも#MBにあるときにのみ

これまでに、logrotateを使用して必要な条件を実行する方法が見つかりませんでした。サイズが#MBを超えない限り、毎日回転します。これはlogrotateディレクティブのみを使用してサポートされるとは思わない。prerotatepostrotatefirstactionlastactionなどのスクリプトフックディレクティブを使用して、巧妙なスクリプトを作成することが可能です

更新

logrotate 3.8.1以降maxsizetimeperiod一緒にサポートされるため、理想的なソリューションになります。この投稿に対する回答を参照してください:ログが特定のサイズを超えない限り、間隔に基づいてログをローテーションする方法は?


4
最適なオプションは、2つの別個のcronコマンドを使用し、デフォルトのconfで毎日実行することと、xではなく、毎日ではなく、サイズディレクティブを使用してオーバーフローが懸念されるファイルのみで構成を行うことです。
SilverbackNet

8
logrotateの3.81のとおり、maxsizeおよびtimeperiodサポートされています。パーserverfault.com/questions/474941/...
belacqua

1
@belacqua私は3.8.7を使用していますが、期間は男性ではありません。
JorgeeFG

正しいバージョンは、実際には3.81ではなく3.8.1です。
トム・ミラー

2

@eggによる最初の答えは、logrotateの私の経験によると、真実ではありません!

場合は、毎日、毎月、...来る最初のその後サイズのディレクティブ、毎日、毎月、...無視され、サイズのディレクティブは、ログファイルに適用されます。

同様に、最初にサイズディレクティブを使用し、次に毎日、毎週、毎月、および毎年のディレクティブを使用する場合、サイズディレクティブは無視されます。


1

日単位を追加すると、サイズ条件が満たされていても毎日ローテーションします。サイズ条件も追加すると、ログの詳細度に応じて1日で2つのローテーションが発生する場合があります。

スクリプトでDailyが最初になった場合、Sizeは起動しません。


詳細オプションを使用して、使用されているルールを確認します。私のテストでは、より具体的なルールがより一般的なルールをオーバーライドできるため、最後のルールのみが使用されると考えています。
ブラム

それが予想される動作であるため、より多くの回転は問題ありません。(ブールOR)ただし、私の問題は、これらの回転が発生しないことです。ディレクティブの順序が重要であるか、どこにも文書化されていないため、ログローテーションのバグ(おそらく機能)のようです。
猫のズボン

logrotate.confとターゲットにしようとしているファイルの例を教えてください。毎日は時間経過以外の条件はありません。サイズは条件付きです。
ポールヒコックス

/tmp/output.log {毎日のサイズ1k回転5}
猫のズボン

1
このファイルは、サイズが1kを超えるとローテーションされますが、期待どおりに毎日ローテーションされるわけではありません
猫のズボン

1

実際、Red Hatの私のmanページには、sizeとminsizeの違いがかなりはっきりしているように見えます。

最小サイズ

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.