How to format ruby logger?

笑着哭i 提交于 2019-12-31 08:44:13

问题


How do you format the ruby logger?


回答1:


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.



回答2:


If you want to format only the time, you can easily do it with datetime_format and the standard format specification. For example, if you do:

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

You will end up with logs such as:

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

If, instead, you want to completely customize your log, you can use logger.formatter. For example, if you do:

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

You will end up with logs such as:

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


来源:https://stackoverflow.com/questions/14382252/how-to-format-ruby-logger

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!