毎日ログを作成したいのですが、小さな問題があります。ログは毎日作成されるのではなく、以前のログファイルが含まれます。これが私の現在の設定です。どのように変更すれば、毎日のログファイルのみが作成されますか?
次のファイルを編集します:/etc/logrotate.d/httpd
Zadminと呼ばれるコントロールパネルを使用しているので、ログパスを2番目のディレクトリとして含めました。
CentOS 6.564ビットを使用しています。
/var/log/httpd/*log /var/sentora/logs/domains/zadmin/*.log {
missingok
rotate 4000000
daily
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
ブライアンの答えに続いて、私はクロノログの大ファンです。クロノログは、あなたが望んでいることをほぼ正確に実行します。
CustomLog "|/usr/sbin/cronolog /var/log/httpd/%Y/%m/%Y-%m-%d-access.log" combined
ErrorLog "|/usr/sbin/cronolog /var/log/httpd/%Y/%m/%Y-%m-%d-error.log"
yum install cronolog
Cent6でクロノログを取得します。
Apacheを使用すると、ログファイルを別のプログラムにパイプして、Apacheをリロード/再起動することなくローテーションを処理できます。 Apacheは、これを行うためのプログラムも提供しています。
ErrorLog "|bin/rotatelogs -l -f /var/log/Apache2/errlogfile.%Y.%m.%d.log 86400" common
CustomLog "|bin/rotatelogs -l -f /var/log/Apache2/logfile.%Y.%m.%d.log 86400" common
logrotate
を手動で実行して、エラーを探してみてください:logrotate -d /etc/logrotate.d/httpd
。マニュアルには、「-dデバッグモードをオンにし、-vを暗黙指定します。デバッグモードでは、ログまたはlogrotate状態ファイルは変更されません。」
これは私たちがうまく使っているものです:
/var/log/httpd/*log {
daily
dateext
dateformate -%d-%m-%Y
missingok
nocompress
rotate 30
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}