Ruby on rails 添加日志消息之前的当前时间

Ruby on rails 添加日志消息之前的当前时间,ruby-on-rails,ruby,timestamp,logging,Ruby On Rails,Ruby,Timestamp,Logging,我为我的应用程序创建了一个名为CRON_LOG的自定义记录器,只需将这段代码添加到config/environment.rb CRON_LOG = Logger.new("#{Rails.root}/log/cron.log") CRON_LOG.level = Logger::INFO 然后,当我想记录一些东西时,只需这样做: CRON_LOG.info "something" 它工作正常,但我想在每条日志消息之前添加当前时间戳。当然,我可以将时间添加到我的日志消息中,但我想知道是否有办法

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

CRON_LOG = Logger.new("#{Rails.root}/log/cron.log")
CRON_LOG.level = Logger::INFO
然后,当我想记录一些东西时,只需这样做:

CRON_LOG.info "something"
它工作正常,但我想在每条日志消息之前添加当前时间戳。当然,我可以将时间添加到我的日志消息中,但我想知道是否有办法将其作为默认值添加到每个日志消息中。我该怎么做


谢谢。

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


[注意:这可能会中断其他记录器;请参阅Stephen的安全解决方案答案-jph]

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

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!

如果它起作用,就接受它作为答案,这样其他有同样问题的人在将来会立即发现它。:-)我添加了一种侵入性较小的处理方法。在任何情况下,如果您计划重载该方法以避免在运行时修改其他活动记录器的行为,我建议在实例上对
Logger
进行子类化或重新定义
format\u message
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!