Bri*_*ian 17 ruby logging timestamp ruby-on-rails
我为我的应用程序创建了一个名为CRON_LOG的自定义记录器,只需将这段代码添加到config/environment.rb中
CRON_LOG = Logger.new("#{Rails.root}/log/cron.log")
CRON_LOG.level = Logger::INFO
Run Code Online (Sandbox Code Playgroud)
然后,当我想记录某些东西时,就这样做:
CRON_LOG.info "something"
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我想在每条日志消息之前添加当前时间戳.当然我可以添加Time.now到我的日志消息,但我想知道是否有办法将其添加为每个日志消息的默认值.我怎样才能做到这一点 ?
谢谢.
ste*_*lis 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!
Run Code Online (Sandbox Code Playgroud)
您可以重新定义正确的方法(例如,environment.rb在初始化程序中添加以下内容):
class Logger
def format_message(severity, timestamp, progname, msg)
"#{timestamp} (#{$$}) #{msg}\n"
end
end
Run Code Online (Sandbox Code Playgroud)
[注意:这可能会破坏其他记录器; 看看斯蒂芬对安全解决方案的回答 - jph]