2013-11-25 57 views
9

紅寶石記錄器的默認樣式是:如何格式化紅寶石記錄器到這個?

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


由於一些蓋伊的答覆,這是我落得這樣做:

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

回答

10

試試這個:

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

感謝您的超級快速響應。這樣可行。對於pid,我只是發現我可以做Process.pid –

+0

$$也適用於pid。 –