Manページは私の質問に答えないし、私は回転サイクルを強制したくないので、私はここで質問をすることにしました。
Logrotateのマニュアルページに次の例があります。
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail [email protected]
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を使っていますが、これは必ずしもディストリビューションやプログラムのバージョンに固有のものではないと考えています。
はい、あなたは複数のワイルドカードを使うことができます。こうすることで、実際のローテーションを実行せずにファイルをテストできます。
logrotate -d -f /etc/logrotate.conf
-d =デバッグモードをオンにします。デバッグモードでは、ログまたはlogrotate状態ファイルは変更されません。
-f =これが必要であるとは思わない場合でも、logrotateに回転を強制するように指示します。 logrotateに新しいエントリを追加した後や、古いログファイルを手動で削除した場合は、新しいファイルが作成されてロギングが正しく続行されるため、これが役に立つ場合があります。
明確にしたかっただけなのです。
単一の設定に対して複数のログファイルを指定することができます。
/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
}
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でテスト済み