내 구성에서, 나는 변화 다음을 담당하는 사람들 위해 rsyslog 한 /home/user/my_app/shared/log/unicorn.stderr.log
사용을 imfile
. 내용은 TCP를 사용하여 다른 원격 로깅 서버로 전송됩니다.
로그 파일이 회전하면 rsyslog는 원격 서버로 데이터 전송을 중지합니다.
rsyslog를 다시로드하고 HUP 신호를 보내고 다시 시작하려고 시도했지만 아무것도 작동하지 않았습니다.
실제로 작동하는 유일한 방법은 더럽습니다.
- 서비스를 중지하고 rsyslog 통계 파일을 삭제 한 후 rsyslog를 다시 시작하십시오. 내 logrotate 파일의 postrotate 후크에있는 모든 것.
kill -9
rsyslog를 시작하십시오.
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 스크립트가 실행 중이었다면) ) ...?