web-dev-qa-db-ja.com

Apacheの毎日のlogrotate

毎日ログを作成したいのですが、小さな問題があります。ログは毎日作成されるのではなく、以前のログファイルが含まれます。これが私の現在の設定です。どのように変更すれば、毎日のログファイルのみが作成されますか?

次のファイルを編集します:/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
}
2
salep

ブライアンの答えに続いて、私はクロノログの大ファンです。クロノログは、あなたが望んでいることをほぼ正確に実行します。

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 cronologCent6でクロノログを取得します。

0
BMDan

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
1
Brian

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
}
1
miken32