it-swarm.dev

logrotate設定ファイルの構文 - 複数のワイルドカードエントリが可能か

Manページは私の質問に答えないし、私は回転サイクルを強制したくないので、私はここで質問をすることにしました。

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

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail [email protected]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の下のログファイルとそのディレクトリのサブディレクトリの下にあるすべてのログファイルの両方を回転させる解決法を探しています - な​​しでそれぞれのサブディレクトリを名前でリストします。

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

79
0xC0000022L

はい、あなたは複数のワイルドカードを使うことができます。こうすることで、実際のローテーションを実行せずにファイルをテストできます。

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

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

114

明確にしたかっただけなのです。

単一の設定に対して複数のログファイルを指定することができます。

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail [email protected]
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}
22
ThorSummoner

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でテスト済み

4
Piotr Dobrogost