我想在命令行应用程序中使用Ruby的记录器;它跳动了puts
,并且具有很好的记录事物的灵活性。使用Ruby的记录器有错误转到标准错误,但其他消息到文件/标准输出?
我希望的一件事是能够将错误/致命消息转到标准错误(如惯例)另外将记录器消息配置到的位置。我做这个
logger = Logger.new(some_file)
logger.debug("This goes to some_file, if debug is set")
logger.info("This goes to some_file, if info is set")
logger.error("This goes to some_file, AND stderr")
一种方式是破解formatter
:
logger.formatter = Proc.new do |severity,time,progname,msg|
message = format_message(severity,time,progname,msg)
if severity == ERROR
$stderr.puts message
end
message
end
这似乎哈克。另一种方法可能是创建一个Logger
,它将其调用代理到底层的实际记录器,但拦截错误消息。
任何人都这样做了,是否有可能已经有这样做?