如何格式化ruby logger呢?

时间:2013-11-25 21:39:58

标签: ruby logging

ruby​​ logger中的默认样式是:

SeverityID, [Date Time mSec #pid] SeverityLabel -- ProgName: message
# => D, [2013-11-25T13:31:03.451024 #38180] DEBUG -- : <message...>

我希望看起来像:

SeverityLabel [Date Time mSec #pid]: message
# => DEBUG [2013-11-25T13:31:03.451024 #38180]: <message...>

我知道我可以这样格式化:

logger.formatter = proc do |severity, datetime, progname, msg|
   "severity [#{datetime}]: #{msg}\n"
end
# => DEBUG [2013-11-25 13:37:45 -0800]: <message...>

但是proc中的日期时间与默认显示的不同。我尝试过使用datetime_format

logger.datetime_format = "%Y-%m-%d %H:%M:%S.%L"

但它对我的记录器没有影响......

另外,我找不到#pid

有什么想法吗?

我见过以下帖子:

How to format ruby logger?

和doc:

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html


感谢Some Guy的回复,这就是我最终做的事情:

logger.formatter = proc do |severity, datetime, progname, msg|
   "#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%6N')} ##{Process.pid}]: #{msg}\n"
end

1 个答案:

答案 0 :(得分:10)

试试这个:

 "#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%L')}]: #{msg}\n"