2012-12-18 2 views
3

나는 Log4perl을 읽고있어 리눅스 상자에서 실행중인 Perl 스크립트의 간단한 로그 관리에이 스크립트를 사용하려고한다. 또한 newsysloglogrotate을 읽었지만 가능한 경우 Log4perl을 사용하려고합니다.Log4perl에서 매일 내 로그를 순환시키는 방법은 무엇입니까?

내가 있도록 /etc/log4perl.conf 파일을 구성하기 위해 노력하고있어 :

  • widget 로거 (INFO 수준)를 정의 <datetime>2012-12-20 같은 문자열을 형식의 날짜/시간입니다 /opt/myapp/logs/myapp-<datetime>.log, 모든 출력을 쓸 것
  • 이 파일은 이전 파일이 삭제되고 <datetime> + 1으로 새 파일이 생성되는 매일 매일 (자정이 바람직 함) 회전되어야합니다. 예를 들어, myapp-2012-12-20.logmyapp-2012-12-21.log로 대체 할 것 등
  • 여기

내가 믿는 내 최고의 시도가 가까운,하지만 여전히 일부 구성 행방 불명입니다 : 어떻게 회전 log4perl.appender.MyAppLogAppender를 구성 할

#####/etc/log4perl.conf############################################################ 
log4perl.logger.widget      = INFO, MyAppLogAppender 

log4perl.appender.MyAppLogAppender   = Log::Log4perl::Appender::File 
log4perl.appender.MyAppLogAppender.filename = /opt/myapp/logs/myapp-???.log 
log4perl.appender.MyAppLogAppender.layout = Log::Log4perl::Layout::SimpleLayout 
################################################################################### 

을 하루에 한 번 오래된 파일을 삭제하고 올바른 타임 스탬프가있는 새 파일을 만드시겠습니까? 미리 감사드립니다.

답변

11

다음은 자정에 일일 롤오버를 정의하고 (날짜 패턴 yyyy-MM-dd), WARN 레벨에서 최대 5 개의 저장된 로그 파일을 유지하고 모든 것을 화면에 덤핑하는 Log :: Log4perl 구성 파일의 예입니다 :

log4perl.logger       = TRACE, Screen, Logfile 

log4perl.appender.Logfile    = Log::Dispatch::FileRotate 
log4perl.appender.Logfile.Threshold  = WARN 
log4perl.appender.Logfile.filename    = test.log 
log4perl.appender.Logfile.max         = 5 
log4perl.appender.Logfile.DatePattern = yyyy-MM-dd 
log4perl.appender.Logfile.TZ          = PST 
log4perl.appender.Logfile.layout  = Log::Log4perl::Layout::PatternLayout 
log4perl.appender.Logfile.layout.ConversionPattern = %d %m %n 

log4perl.appender.Screen    = Log::Log4perl::Appender::Screen 
log4perl.appender.Screen.stderr   = 0 
log4perl.appender.Screen.utf8   = 1 
log4perl.appender.Screen.layout   = Log::Log4perl::Layout::PatternLayout::Multiline 
log4perl.appender.Screen.layout.ConversionPattern = [%p] %m %n 

(참조 : https://metacpan.org/module/Log::Log4perl::FAQ#How-can-I-roll-over-my-logfiles-automatically-at-midnight-)

+0

최고 @creaktive (+1) - 한 가지 더 :'log4perl.appender.Logfile.layout' 후 "\"의 의미가 무엇인가? 이를 제거하고 같은 줄에 (Log :: Log4perl :: Layout :: PatternLayout') 값을 넣을 수 있습니까? 다시 한 번 감사드립니다! – IAmYourFaja

+0

또한, * Log4perl을 사용하는 * Perl 스크립트가이'위젯 '로거를 사용할 수 있다고 가정합니까? – IAmYourFaja

+0

죄송합니다, 이것이 마지막 후속 조치입니다 :'LogFile' appender를 사용하려면'WARN' 레벨을 설정하는 것처럼 보입니다. 모든 로그 레벨 (WARN 또는 기타)에 대해 appender에 로거를 첨부하는 방법이 있습니까? 다시 한 번 감사드립니다! – IAmYourFaja