2013-01-17 6 views
24

どのようにしてルビーロガーをフォーマットしますか?ルビーロガーのフォーマット方法は?

+1

は "乱雑ライン" を説明してください。出力は、あなたが送信したものとほとんど同じです。 –

+1

先頭のステータスIDは非常に面倒です: 'I、[2014-01-23T17:41:35.268796#8066] INFO - :event = updateSiteStats' – drewish

答えて

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

あなただけの時間をフォーマットしたい場合は、簡単datetime_formatと標準format specificationでそれを行うことができます。代わりに、あなたは完全にあなたのログをカスタマイズしたい場合は、logger.formatterを使用することができ、

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... 

: はたとえば、あなたが行う場合:

# 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...") 

次のようなログになってしまいます。あなたがしなければ はたとえば、:

# 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...") 

次のようなログになってしまいます。

[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

良い情報ですが、一貫した間隔を保つために、代わりにprintfを使用してください。 'sprintf"%5.5s "、重大度' – nateware

+5

などの数字で特定の文字列の間隔を設定することも、 '#{severity.ljust(5)}' – Ixio

関連する問題