Хотите знать, как установить разные уровни журнала для разных целей.Ниже мой 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
Я могу установить уровень отладки, если найдена специальная переменная env, $logger.level = Logger::DEBUG if ENV['enable_debug_logs'] == 'true'
Но, не уверен, как всегда писать Debug
строки в файле журнала и только Info
строки в консоли.
Кто-нибудь знает?Любая помощь с благодарностью!