我正在阅读Log4perl,并想尝试将其用于在Linux机器上运行的Perl脚本的简单日志管理。我也阅读了newsysloglogrotate,但如果可能的话,想使用Log4perl。

我正在尝试配置/etc/log4perl.conf文件,以便它:

  • 定义一个widget记录器(INFO级别),它将所有输出写入/opt/myapp/logs/myapp-<datetime>.log,其中<datetime>是日期/时间格式的字符串,例如2012-12-20
  • myapp-<datetime>.log文件需要每天(最好是在午夜)旋转,在该文件中删除旧文件,并使用<datetime> + 1创建一个新文件。例如,myapp-2012-12-20.log将替换为myapp-2012-12-21.log等。

  • 我认为这是我的最佳尝试,但已经接近完成,但仍然缺少某些配置:
    #####/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
    ###################################################################################
    

    如何配置log4perl.appender.MyAppLogAppender每天轮换一次,删除旧文件并创建带有正确时间戳的新文件? 预先感谢。

    最佳答案

    这是一个Log::Log4perl配置文件的示例,该文件定义午夜的每日翻转(日期模式yyyy-MM-dd),在WARN级别最多保留5个保存的日志文件,并将所有内容转储到屏幕上:

    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-)

    09-04 01:16