logrotate構成ファイルの構文-複数のワイルドカードエントリが可能ですか?


83

マニュアルページは私の質問に答えず、ローテーションサイクルを強制したくないので、ここで質問することにしました。

logrotateのマニュアルページには、次の例があります。

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

ワイルドカードを使用したすべての例には、1つのエントリのみが含まれています。今、私が興味を持っているのは、これも許可されているかどうかです:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

理由は次のとおりです。複数の仮想ホストがあり、それらの仮想ホストを「所有する」ユーザーごとに分割します。ログファイルは誰でも読み取り可能なため、フォルダーをユーザーホームディレクトリにバインドマウントしますが、ユーザーが「所有する」ログファイルに制限します。 -とにかくそのスキームが必要です)。だから私は/var/log/httpd、そのディレクトリのサブディレクトリの下にあるログファイルとすべてのログファイルの両方をローテーションするソリューションを探しています- すべてのサブディレクトリを名前でリストする必要はありません

一般に、マニュアルページには、ワイルドカードルールに対して複数のエントリが可能なのか、完全なパスに対してのみ可能なのかについての手がかりがありません。Debian "Squeeze"に付属しているlogrotateバージョン3.7.8-6を使用していますが、これは必ずしもディストリビューションまたはプログラムバージョンに固有のものではないことを認識しています。

回答:


119

はい、複数のワイルドカードを使用できます。これを行うことにより、実際の回転を実行せずにファイルをテストできます。

logrotate -d -f /etc/logrotate.conf
  • -d =デバッグモードをオンにします。デバッグモードでは、ログまたはlogrotate状態ファイルは変更されません。

  • -f = logrotateに回転が必要であるとは思わない場合でも強制的に回転するように指示します。これは、logrotateに新しいエントリを追加した後、または古いログファイルが手動で削除された場合、新しいファイルが作成され、ロギングが正しく続行されるため、便利な場合があります。


3
どうもありがとう!試しただけで動作します。出力から、ワイルドカードはシェルでの動作と同じように動作することが期待されるようです。
0xC0000022L

24

明確にしたかったのです

単一の構成に対して複数のログファイルを指定できます。たとえば、

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

//、複数の行で発生する異なるパスに問題はありませんか?
ネイサンバサニーズ

@NathanBasanese私はあなたの質問を完全に理解していません、あなたが好きなディスク上のどこでもファイルのパス行を指すことができると思います、それらはすべて同じディレクトリプレフィックスにある必要はありません。
ThorSummoner

ああ@NathanBasanese、私は別の回線で複数のログローテーションの目標を持つことは、通常の使用のように見える、私は、例えば、/etc/logrotate.d/rsyslogのために、他のlogrotate.dスクリプトからそのフォームをコピーし、私は理解して考える
ThorSummoner

4

logrotateの manページから:

ログファイル名は引用符で囲むことができます(名前にスペースが含まれる場合は引用符が必要です)。通常のシェル引用ルールが適用され、 '、 "、および\文字がサポートされます。

単一のパターンから複数のパターンに変更する場合は、引用符を変更または削除することを忘れないでください。

これは動作します:

/var/log/*.log /var/log/*.blog {

これも機能します:

/var/log/*.log
/var/log/*.blog {

これは動作しません:

'/var/log/*.log /var/log/*.blog' {

そしてこれも:

"/var/log/*.log /var/log/*.blog" {

単一パターンの場合と比較してください。

これは動作します:

'/var/log/*.log' {

これも機能します:

"/var/log/*.log" {

logrotate 3.10.0でテスト済み


2
これが機能するかどうかを知るのは興味深いでしょう"/var/space /log/*.log" "/var/log/*.blog"
。– KajMagnus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.