如何在ruby中为logger添加自定义日志级别?

tur*_*rri 11 ruby logging

我需要为ruby logger添加一个自定义日志级别,如"详细"或"流量",该怎么办?

Luc*_*cas 5

您自己的记录器只需要覆盖该Logger#format_severity方法,如下所示:

class MyLogger < Logger

  SEVS = %w(DEBUG INFO WARN ERROR FATAL VERBOSE TRAFFIC)
  def format_severity(severity)
    SEVS[severity] || 'ANY'
  end

  def verbose(progname = nil, &block)
    add(5, nil, progname, &block)
  end
end
Run Code Online (Sandbox Code Playgroud)


小智 5

您只需添加到Logger类:

require 'logger'

class Logger
  def self.custom_level(tag)
    SEV_LABEL << tag 
    idx = SEV_LABEL.size - 1 

    define_method(tag.downcase.gsub(/\W+/, '_').to_sym) do |progname, &block|
      add(idx, nil, progname, &block)
    end 
  end 

  # now add levels like this:

  custom_level 'TRAFFIC'
  custom_level 'ANOTHER-TAG'
end


# using it:

log = Logger.new($stdout)
log.traffic('testing')
log.another_tag('another message here.')
Run Code Online (Sandbox Code Playgroud)


mar*_*cgg -2

您可以通过重载Logger 类来创建自己的记录器