在日志消息之前添加当前时间

我为我的应用程序创建了一个名为CRON_LOG的自定义记录器,只需将这段代码添加到config / environment.rb中

CRON_LOG = Logger.new("#{Rails.root}/log/cron.log") CRON_LOG.level = Logger::INFO 

然后,当我想记录某些东西时,就这样做:

 CRON_LOG.info "something" 

它工作正常,但我想在每条日志消息之前添加当前时间戳。 当然我可以将Time.now添加到我的日志消息中,但我想知道是否有办法将其添加为默认的每条日志消息。 我怎样才能做到这一点 ?

谢谢。

制作SysLog格式记录器的最简单方法是直接分配格式化程序:

 logger = Logger.new Rails.root.join('path', 'to', 'log') logger.formatter = Logger::Formatter.new logger.info 'Hello, world!' # Writes: # # I, [2011-06-02T20:02:34.579501 #15444] INFO -- : Hello, world! 

您可以重新定义正确的方法(例如,将以下内容添加到environment.rb或初始化程序中):

 class Logger def format_message(severity, timestamp, progname, msg) "#{timestamp} (#{$$}) #{msg}\n" end end 

[注意:这可能会破坏其他记录器; 看斯蒂芬对安全解决方案的回答 – jph]