2013-01-17 17 views
24

आप रूबी लॉगर को कैसे प्रारूपित करते हैं?रूबी लॉगर को कैसे प्रारूपित करें?

+1

का वर्णन "गंदा लाइन":

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

आप इस तरह के रूप लॉग के साथ खत्म हो जाएगा। आउटपुट जो कुछ भी आप भेजते हैं वह काफी है। –

+1

अग्रणी स्थिति आईडी बहुत परेशान है: 'मैं, [2014-01-23T17: 41: 35.268796 # 8066] जानकारी -: 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 के साथ क्या कर सकते हैं। उदाहरण के लिए, यदि आप कार्य करें:

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

, तो इसके बजाय, आप पूरी तरह से अपनी लॉग अनुकूलित करने के लिए चाहते हैं, आप logger.formatter उपयोग कर सकते हैं:

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

आप इस तरह के रूप लॉग के साथ खत्म हो जाएगा। उदाहरण के लिए, यदि आप कार्य करें:

[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 का उपयोग करें। आप 'स्पिंटफ "% 5.5s", गंभीरता – nateware

+5

जैसे किसी विशिष्ट स्ट्रिंग स्पेसिंग को सेट कर सकते हैं या बस '# {गंभीरता। Ljust (5)}' – Ixio

संबंधित मुद्दे