我为我的应用程序创建了一个名为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
,但我想知道是否有办法将其添加为每条日志消息的默认值。我怎么能这样做?
感谢。
答案 0 :(得分:37)
制作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!
答案 1 :(得分:8)
您可以重新定义正确的方法(例如将以下内容添加到environment.rb
或初始值设定项中):
class Logger
def format_message(severity, timestamp, progname, msg)
"#{timestamp} (#{$$}) #{msg}\n"
end
end
[警告:这可能会破坏其他记录器;请参阅斯蒂芬对安全解决方案的回答 - jph]