
현재 logrotate는 이전 로그 파일의 이름을 access.log.1.gz, access.log.2.gz 등으로 바꿉니다. 이름을 access.log.20090714.gz, access.log.20090715.gz로 지정하는 것이 좋습니다. 기타 - 매일 하나씩.
이전 로그 파일에 대한 파일 이름 패턴을 지정하는 옵션을 찾을 수 없습니다. 이 작업을 수행하는 방법을 알고 있습니까?
그런데, 이것은 중요한 경우 lighttpd 로그 파일을 회전하기 위한 것입니다.
답변1
/etc/logrotate.conf
또는 /etc/logrotate.d/lighttpd
또는 적절한 파일 에서 dateext
날짜 접미사를 적용하려는 스탠자에 추가하십시오.
자세한 내용은logrotate 매뉴얼 페이지:
날짜 연장
단순히 숫자를 추가하는 대신 YYYYMMDD와 같은 일일 확장자를 추가하여 이전 버전의 로그 파일을 보관합니다.
답변2
cronolog를 사용하세요. 처음부터 올바른 파일 이름으로 로그 파일을 작성합니다(예: 일반적으로 웹 서버에서 로그 파일을 YYYY/MM/DD/access 또는 YYYY/MM/DD/error 등으로 작성하도록 합니다). lighttpd를 사용하여 cronolog를 구성하는 방법에 대한 자세한 내용은 다음을 참조하세요.http://redmine.lighttpd.net/projects/1/wiki/MigatingFromApache
(해당 페이지에서는 server.errorlog가 cronolog를 통해 실행될 수 없다고 언급하고 있지만 "수정됨"으로 표시된 버그 보고서가 있는 것 같습니다. 불행히도 한 번에 두 개 이상의 URL을 게시할 수 없습니다. 저는 serverfault의 "새로운" 사용자입니다...)
답변3
나는 lighttpd나 logrotate가 스스로 이것을 할 수 있다고 생각하지 않습니다. 이를 달성하기 위한 두 가지 옵션이 있습니다.
cronjob의 끝과 같이 logrotate 직후에 직접 스크립팅을 수행하십시오. 다음과 같은 것 :
if [ -f /var/log/lighttpd/access.log.1.gz ]; then`
mv /var/log/lighttpd/access.log.1.gz /var/log/lighttpd/access.log.$date.gz
fi
또는 syslog-ng는 날짜별로 로그 파일을 작성할 수 있으며 lighttpd는 로그를 직접 작성하는 대신 syslog에 로그를 보낼 수 있습니다.
# syslog-ng.conf
destination df_lighttpd { file("/var/log/lighttpd/$YEAR$MONTH$DAY.log"); };
filter f_lighttpd { program("lighttpd"); };
log { source(s_all); filter(f_lighttpd); destination(df_lighttpd); };
lighttpd conf에 accesslog.use-syslog
&를 설정하세요 .server.errorlog-use-syslog
편집하다:Cronolog는 내 제안 중 하나보다 더 간단하고 귀하에게 적합하다면 그 방법을 사용하겠습니다.