关于日志记录:如何将ruby logger格式化为此?

How to format ruby logger to this?

ruby logger中的默认样式是:

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

我想让它看起来像:

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

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

1
2
3
4
5
logger.formatter = proc do |severity, datetime, progname, msg|
  "severity [#{datetime}]: #{msg}
"

end
# => DEBUG [2013-11-25 13:37:45 -0800]: <message...>

但是proc中的datetime看起来并不像默认显示的那样。 我尝试过使用datetime_format

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

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

另外,我也找不到#pid

有什么想法吗?

我看过以下帖子:

如何格式化ruby logger?

和文件:

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

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

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

end

试试这个:

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