gpt4 book ai didi

ruby - ActiveRecord 干扰记录器

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:37 24 4
gpt4 key购买 nike

似乎使用 ActiveRecord(需要 ActiveSupport)与 Logger 类混淆,导致困难。这可以通过一些示例代码看出:

require 'rubygems'
#require 'activerecord'
require 'logger'

log = Logger.new(STDERR)
log.sev_threshold = Logger::INFO
log.datetime_format = "%Y-%m-%d %H:%M:%S"

log.debug "debug"
log.info "info"
log.warn "warn"
log.error "error"
log.fatal "fatal"

运行这段代码会产生这个漂亮的输出:

I, [2009-09-02 10:49:39#27562]  INFO -- : infoW, [2009-09-02 10:49:39#27562]  WARN -- : warnE, [2009-09-02 10:49:39#27562] ERROR -- : errorF, [2009-09-02 10:49:39#27562] FATAL -- : fatal

However, if I uncomment the require 'activerecord' line, I instead get this:

infowarnerrorfatal 

So I did some searching about and after looking at activesupport:

logger.rb

I found the following "working solution"

log = Logger.new(STDERR)
log.sev_threshold = Logger::INFO
log.datetime_format = "%Y-%m-%d %H:%M:%S"
class Formatter
Format = "%s, [%s#%d] %5s -- %s: %s\n"

attr_accessor :datetime_format

def initialize
@datetime_format = nil
end

def call(severity, time, progname, msg)
Format % [severity[0..0], format_datetime(time), $$, severity, progname, msg2str(msg)]
end

private
def format_datetime(time)
if @datetime_format.nil?
time.strftime("%Y-%m-%dT%H:%M:%S.") << "%06d " % time.usec
else
time.strftime(@datetime_format)
end
end

def msg2str(msg)
case msg
when ::String
msg
when ::Exception
"#{ msg.message } (#{ msg.class })\n" <<
(msg.backtrace || []).join("\n")
else
msg.inspect
end
end
end
f=Formatter.new
f.datetime_format = "%Y-%m-%d %H:%M:%S"
log.formatter=f

使用上面的方法,我得到了我喜欢的输出。然而,在我看来,这似乎很粗鲁而且不像 Ruby。有谁知道是否有更简单的方法来获得所需的结果?

谢谢!

最佳答案

上一小时同样的问题困扰着我,但解决方案非常简单。

ActiveSupport 使用 SimpleFormatter,您必须手动设置“旧”格式化程序。

require 'rubygems'
require 'active_support'
require 'logger'

log = Logger.new(STDERR)
log.sev_threshold = Logger::INFO
log.datetime_format = "%Y-%m-%d %H:%M:%S"
log.formatter = Logger::Formatter.new

Ps:抱歉我的英语不好:)

关于ruby - ActiveRecord 干扰记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com