我想在命令行應用程序中使用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
,它將其調用代理到底層的實際記錄器,但攔截錯誤消息。
任何人都這樣做了,是否有可能已經有這樣做?