Ubuntu 14.04에서 rsyslogd 7.4.4를 사용하고 있습니다. 구성 파일을 업데이트했습니다./etc/rsyslog.d/30-comComponent.conf다음 콘텐츠가 포함되어 있습니다:
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$EscapeControlCharactersOnReceive off
$outchannel network,/var/log/component/network.log,10240000,/usr/home/component/bin/./rotate.sh /var/log/component/network.log
if $programname == 'Network' then :omfile:$network
if $programname == 'Network' then stop
if $programname == 'Network' then /var/log/gwc/network.log
가끔 삭제해야 할 때가 있어요웹로그수동 제출. 그 후에는 항상 데몬을 다시 시작해야 합니다. 문제는 누군가가 적절한 syslog 채널(제 경우에는 "네트워크")에 쓸 때까지 새 파일이 생성되지 않는다는 것입니다. 하지만 난 갖고 싶어웹로그파일이 비어 있어도 마찬가지입니다.
얼마 전 거의 동일한 구성으로 Ubuntu 10.04에서 rsyslogd 4.2.0을 사용했습니다. 유일한 차이점은 "~"으로 대체"멈추다" 그리고":om 파일:”가 도입되었습니다. 해당 버전에서는 모든 것이 정상이며 데몬을 다시 시작한 후에 새 파일이 생성됩니다.
rsyslogd 4.2.0의 다음 줄로 인해 파일이 새로 생성되는 것 같습니다.
if $programname == 'Network' then /var/log/gwc/network.log
그러나 7.4.4는 작동하지 않는 것 같습니다. 새 버전을 사용하여 이전 버전의 동작을 어떻게 달성할 수 있습니까?
답변1
Rsyslog 5.x+는 이 필터와 일치하는 로그 항목이 있을 때까지 파일을 생성하거나 네트워크 연결을 열지 않습니다.
이는 삭제 권한 문제 해결과 관련된 이전 동작에서 변경된 사항입니다. 현재(8.5 기준) 빈 파일을 강제로 생성할 수 있는 방법은 없습니다.
답변2
강제 로그 회전은 일반적으로 logrotate를 사용하여 수행됩니다. 예를 들어 rhel과 같은 배포판에는 /etc/logrotate.d/에 로그 회전 구성이 있습니다.
예: /etc/logrotate.d/syslog에는 rsyslogd 파일에 대한 규칙이 포함되어 있습니다. 이 경우 다음을 사용하여 로그 회전을 강제할 수 있습니다.
logrotate -f /etc/logrotate.d/syslog
답변3
logrotate -f /etc/logrotate.conf