想知道如何为不同的目标设置不同的日志级别。下面是我的Ruby代码,它同时向Console和File写入一行代码。
# https://stackoverflow.com/a/6407200
class MultiIO
def initialize(*targets)
@targets = targets
end
def write(*args)
@targets.each do |t|
t.write(*args)
end
end
def close
@targets.each(&:close)
end
end
module Logging
def self.logger(logname, programname, debug = false)
log_file = File.open(logname, "a")
log_file.sync = true
zlogger = Logger.new MultiIO.new(log_file, STDOUT)
zlogger.level = Logger::INFO
zlogger.progname = programname
zlogger.formatter = proc do |serverity, datetime, progname, msg|
"#{datetime.strftime('%Y-%m-%d %I:%M:%S %p %:::z %Z')} - #{serverity} - [#{progname}] | #{msg}\n"
end
zlogger
end
end如果找到特殊的环境变量$logger.level = Logger::DEBUG if ENV['enable_debug_logs'] == 'true',我可以将级别设置为调试
但是,不确定如何始终将Debug行写入日志文件,而只将Info行写入控制台。
有人知道吗?任何帮助都是非常感谢的!
https://stackoverflow.com/questions/50625613
复制相似问题