내 구성에서, 나는 변화 다음을 담당하는 사람들 위해 rsyslog 한 /home/user/my_app/shared/log/unicorn.stderr.log사용을 imfile. 내용은 TCP를 사용하여 다른 원격 로깅 서버로 전송됩니다.
로그 파일이 회전하면 rsyslog는 원격 서버로 데이터 전송을 중지합니다.
rsyslog를 다시로드하고 HUP 신호를 보내고 다시 시작하려고 시도했지만 아무것도 작동하지 않았습니다.
실제로 작동하는 유일한 방법은 더럽습니다.
- 서비스를 중지하고 rsyslog 통계 파일을 삭제 한 후 rsyslog를 다시 시작하십시오. 내 logrotate 파일의 postrotate 후크에있는 모든 것.
kill -9rsyslog를 시작하십시오.
rsyslog 내부를 건드리지 않고이 작업을 수행 할 수 있는 올바른 방법이 있습니까?
Rsyslog 파일
$ ModLoad 임 마크 $ ModLoad imudp $ ModLoad imtcp $ ModLoad imuxsock $ ModLoad imklog $ ModLoad imfile $ template WithoutTimeFormat, "[환경] [% syslogtag %]-% msg %" $ WorkDirectory / var / spool / rsyslog $ InputFileName /home/user/my_app/shared/log/unicorn.stderr.log $ InputFileTag 유니콘 -stderr $ InputFileStateFile stat-unicorn-stderr $ InputFile 심각도 정보 $ InputFileFacility 로컬 8 $ InputFilePollInterval 1 $ InputFilePersistStateInterval 1 $ InputRunFileMonitor # 원격 서버로 전달 $ syslogtag에 'apache-'가 포함 된 경우 @@ my_server : 5000; WithoutTimeFormat : syslogtag, "apache-"포함 ~ *. * @@ my_server : 5000; SyslFormat
로그 파일
/home/user/my_app/shared/log/*.log {
매일
missingok
dateext
30도 회전
압박 붕대
공증인
확장 gz
카피
640 명의 사용자 생성
공유 스크립트
회전 후
(rsyslog 중지 && rm / var / spool / rsyslog / stat- * && rsyslog 2 시작> & 1) || 진실
엔드 스크립트
}
참고로, 파일은 rsyslog 사용자가 읽을 수 있으며 서버에 연결할 수 있으며 동일한주기에서 회전하지 않는 다른 로그 파일은 계속 올바르게 추적됩니다.
우분투 12.04를 실행 중입니다.
post-rotate대신에 ( 사용 하지 않는) 사용하고 있다고 생각합니다postrotate. 왜냐하면 원래 logrotate 스크립트는 rsyslog와 잘 작동했을 것입니다 (postrotate 스크립트가 실행 중이었다면) ) ...?