2013-11-25 10 views
9

Lo stile predefinito in Ruby logger è:Come formattare il ruby ​​logger su questo?

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

e voglio fare assomiglia:

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

So che posso formattarlo in questo modo:

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

ma il datetime in proc NON assomiglia a quello mostrato in default. Ho provato con datetime_format

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

ma non ha alcun effetto sul mio registratore ...

Inoltre, non riesco a trovare #pid sia

ogni pensiero?

ho visto il seguente post:

How to format ruby logger?

e il doc:

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


Grazie alla risposta di un tizio, questo è quello che ho finito per fare :

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

risposta

10

provare questo:

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

Grazie per rispondono super veloce. Che funzioni. e per il pid ho appena scoperto che posso fare Process.pid –

+0

$$ funziona anche per pid. –