2013-01-17 19 views
24

Ruby logger'ı nasıl biçimlendiriyorsunuz? Eğer sadece zaman biçimlendirmek istiyorsanızRuby logger nasıl biçimlendirilir?

+1

"dağınık çizgi" Açıklayın:

# Set the logger: logger = Logger.new($stdout) logger.level = Logger::DEBUG logger.formatter = proc do |severity, datetime, progname, msg| date_format = datetime.strftime("%Y-%m-%d %H:%M:%S") if severity == "INFO" or severity == "WARN" "[#{date_format}] #{severity} (#{progname}): #{msg}\n" else "[#{date_format}] #{severity} (#{progname}): #{msg}\n" end end logger.info("This is an info log...") logger.error("This is an error log...") 

Aşağıdaki gibi günlükleri ile sona erecek. Çıktı, ne göndersin her neyse. –

+1

Önde gelen durum kimliği süper can sıkıcı: 'I, [2014-01-23T17: 41: 35.268796 # 8066] INFO -: event = updateSiteStats' – drewish

cevap

49
logger = Logger.new('nice.log') 

logger.formatter = proc do |severity, datetime, progname, msg| 
    "NICE: #{msg}\n" 
end 

logger.info("I like cheese.") 

# nice.log: 
NICE: I like cheese. 
25

, sen datetime_format ve standart format specification ile bunu kolayca yapabilirsiniz. Yerine, tamamen günlüğünüzü özelleştirmek isterseniz logger.formatter kullanabilirsiniz

I, [2015-01-20 14:02:29#17329] INFO -- myProg: This is an info log... 
E, [2015-01-20 14:02:29#17329] ERROR -- myProg: This is an error log... 

: Örneğin, bunu yaparsanız:

# Set the logger: 
logger = Logger.new($stdout) 
logger.level = Logger::DEBUG 
logger.datetime_format = "%Y-%m-%d %H:%M:%S" 

logger.info("This is an info log...") 
logger.error("This is an error log...") 

Aşağıdaki gibi günlükleri ile sona erecek. Örneğin, bunu yaparsanız:

[2015-01-20 14:48:04] INFO (myProg): This is an info log... 
[2015-01-20 14:48:04] ERROR (myProg): This is an error log... 
+5

İyi bir bilgi, ancak tutarlı aralık tutmak için, sadece printf yerine kullanın. "Sprintf"% 5.5s ", önemlilik ' – nateware

+5

gibi bir sayı ile belirli bir dizgi aralığı belirtebilirsiniz veya sadece # # [severity.ljust (5)}' – Ixio