lib/tee_logger.rb in tee_logger-2.6.0 vs lib/tee_logger.rb in tee_logger-2.7.0

- old
+ new

@@ -1,120 +1,127 @@ -require 'tee_logger/version' -require 'logger' - -# namespace -module TeeLogger - # no param of filename, set this filename - DEFAULT_FILE = './tee_logger.log' - # Implements targets - LOGGING_METHODS = [:debug, :info, :warn, :error, :fatal].freeze - - # shortcut for TeeLogger::TeeLogger.new - # @see TeeLogger - def self.new(logdev = DEFAULT_FILE, shift_age = 0, shift_size = 1_048_576) - TeeLogger.new(logdev, shift_age, shift_size) - end - - # main - # @see http://www.rubydoc.info/stdlib/logger/Logger Logger - class TeeLogger - class << self - # @!macro [attach] logging_methods - # @!method $1(progname = nil, disabling_target = nil, &block) - # logging $1 level message. - # @param progname see also Logger - # @param disabling_target (Symbol) valid values => [:console, :logfile] - # @param &block see also Logger - # @return true - # @see Logger - def define_logging_methods(name) - define_method(name) do |progname = nil, disabling_target = nil, &block| - if disabling_target - disable(disabling_target) { logging(name, progname, &block) } - else - logging(name, progname, &block) - end - end - end - private :define_logging_methods - - # @!macro [attach] loglevel_check_methods - # @!method $1(name) - # @return [Boolean] - def define_loglevel_check_methods(name) - define_method(name) do - @console.send(name) - @logfile.send(name) - end - end - private :define_loglevel_check_methods - end - - attr_reader :level, :progname, :formatter - - # @param logdev [String] - # @param shift_age [Integer] - # @param shift_size [Integer] - # @see Logger#initialize - def initialize(logdev = DEFAULT_FILE, shift_age = 0, shift_size = 1_048_576) - @console = Logger.new($stdout) - @logfile = Logger.new(logdev, shift_age, shift_size) - end - - define_logging_methods :debug - define_logging_methods :info - define_logging_methods :warn - define_logging_methods :error - define_logging_methods :fatal - - define_loglevel_check_methods :debug? - define_loglevel_check_methods :info? - define_loglevel_check_methods :warn? - define_loglevel_check_methods :error? - define_loglevel_check_methods :fatal? - - # @param level [Integer] - def level=(level) - @console.level = @logfile.level = @level = level - end - alias_method :sev_threshold, :level - alias_method :sev_threshold=, :level= - - # @param name [String, Symbol] - def progname=(name = nil) - @console.progname = @logfile.progname = @progname = name - end - - # @param formatter - def formatter=(formatter) - @console.formatter = @logfile.formatter = @formatter = formatter - end - - # @param logdev_name [String, Symbol] - # @yield before logdev_name disable, after logdev_name enable. - def disable(logdev_name) - if block_given? - disable(logdev_name) - yield - enable(logdev_name) - else - logdev_instance(logdev_name).formatter = proc { |_, _, _, _| '' } - end - end - - # @param logdev_name [String, Symbol] - def enable(logdev_name) - logdev_instance(logdev_name).formatter = @formatter - end - - private - - def logging(name, progname, &block) - @console.send(name, progname, &block) - @logfile.send(name, progname, &block) - end - - def logdev_instance(logdev_name) - instance_variable_get("@#{logdev_name}") - end - end -end +require 'tee_logger/version' +require 'logger' + +# namespace +module TeeLogger + # no param of filename, set this filename + DEFAULT_FILE = './tee_logger.log' + # Implements targets + LOGGING_METHODS = [:debug, :info, :warn, :error, :fatal].freeze + + # shortcut for TeeLogger::TeeLogger.new + # @see TeeLogger + def self.new(logdev = DEFAULT_FILE, shift_age = 0, shift_size = 1_048_576) + TeeLogger.new(logdev, shift_age, shift_size) + end + + # main + # @see http://www.rubydoc.info/stdlib/logger/Logger Logger + class TeeLogger + class << self + # @!macro [attach] logging_methods + # @!method $1(progname = nil, disabling_target = nil, &block) + # logging $1 level message. + # @param progname see also Logger + # @param disabling_target (Symbol) valid values => [:console, :logfile] + # @param &block see also Logger + # @return true + # @see Logger + def define_logging_methods(name) + define_method(name) do |progname = nil, disabling_target = nil, &block| + if disabling_target + disable(disabling_target) { logging(name, progname, &block) } + else + logging(name, progname, &block) + end + end + end + private :define_logging_methods + + # @!macro [attach] loglevel_check_methods + # @!method $1(name) + # @return [Boolean] + def define_loglevel_check_methods(name) + define_method(name) do + @console.send(name) + @logfile.send(name) + end + end + private :define_loglevel_check_methods + end + + attr_reader :level, :progname, :formatter, :datetime_format + + # @param logdev [String] + # @param shift_age [Integer] + # @param shift_size [Integer] + # @see Logger#initialize + def initialize(logdev = DEFAULT_FILE, shift_age = 0, shift_size = 1_048_576) + @console = Logger.new($stdout) + @logfile = Logger.new(logdev, shift_age, shift_size) + end + + define_logging_methods :debug + define_logging_methods :info + define_logging_methods :warn + define_logging_methods :error + define_logging_methods :fatal + + define_loglevel_check_methods :debug? + define_loglevel_check_methods :info? + define_loglevel_check_methods :warn? + define_loglevel_check_methods :error? + define_loglevel_check_methods :fatal? + + # @param level [Integer] + def level=(level) + @console.level = @logfile.level = @level = level + end + alias_method :sev_threshold, :level + alias_method :sev_threshold=, :level= + + # @param name [String, Symbol] + def progname=(name = nil) + @console.progname = @logfile.progname = @progname = name + end + + # @param formatter + def formatter=(formatter) + @console.formatter = @logfile.formatter = @formatter = formatter + end + + # @param formatter + def datetime_format=(format) + @console.datetime_format = + @logfile.datetime_format = + @datetime_format = format + end + + # @param logdev_name [String, Symbol] + # @yield before logdev_name disable, after logdev_name enable. + def disable(logdev_name) + if block_given? + disable(logdev_name) + yield + enable(logdev_name) + else + logdev_instance(logdev_name).formatter = proc { |_, _, _, _| '' } + end + end + + # @param logdev_name [String, Symbol] + def enable(logdev_name) + logdev_instance(logdev_name).formatter = @formatter + end + + private + + def logging(name, progname, &block) + @console.send(name, progname, &block) + @logfile.send(name, progname, &block) + end + + def logdev_instance(logdev_name) + instance_variable_get("@#{logdev_name}") + end + end +end