syslog-ng:logrotate_miss
syslog-ngで出力したログをlogrotateでやらかしたときの対処
syslog-ngで年月日をつけてログ出力しているのにlogroateでローテートされたとき、オリジナルのファイル名にローテートした年月日がついて、同名の空ファイルが作成される。
# ll -rw-r----- 1 root adm 521 10月 26 03:18 2014 access.apache.20141026.log-20141102 -rw-r----- 1 root adm 0 11月 2 03:30 2014 access.apbeta.20141026.log
まずは、ファイルサイズ0のファイル(空ファイル)を一括削除する。
# find ./ -size 0 -exec rm {} \; # ll -rw-r----- 1 root adm 521 10月 26 03:18 2014 access.apache.20141026.log-20141102
続いて、ファイル名のログローテートされた年月日部分を削除する(.log-yyyymmddを.logに置換する)。
# for file in *.log-2014*; { mv "$file" "${file%%.log-2014*}.log"; } # ll -rw-r----- 1 root adm 521 10月 26 03:18 2014 access.apache.20141026.log
ローテートの設定ファイルを編集(削除やコメントアウト)する。
# vi /etc/logrotate.d/httpd
syslog-ng/logrotate_miss.txt · 最終更新: 2016/03/08 08:04 by clownclown