module DogTrainer::Logging

module to setup logging per-class throughout DogTrainer

Attributes

formatter[R]

@!attribute [r] formatter

@api private
@return [Log4r::Formatter]
level[R]

@!attribute [r] level

@return [Integer] The current log level. Lower numbers correspond
  to more verbose log levels.
outputter[R]

@!attribute [r] outputter

@api private
@return [Log4r::Outputter]

Public Class Methods

debug_formatter() click to toggle source

Return a new log formatter with the debug-level pattern

@return [Log4r::PatternFormatter]

# File lib/dogtrainer/logging.rb, line 67
def debug_formatter
  Log4r::PatternFormatter.new(pattern: '[%d - %C - %l] %m')
end
default_formatter() click to toggle source

Return a new log formatter with the default pattern

@return [Log4r::PatternFormatter]

# File lib/dogtrainer/logging.rb, line 60
def default_formatter
  Log4r::PatternFormatter.new(pattern: '%l\t -> %m')
end
default_outputter() click to toggle source

Return the default log outputter (console)

@return [Log4r::StderrOutputter]

# File lib/dogtrainer/logging.rb, line 74
def default_outputter
  Log4r::StderrOutputter.new 'console'
end
level=(level) click to toggle source

Set the logger level and the output formatter

# File lib/dogtrainer/logging.rb, line 31
def level=(level)
  outputter.level = level
  @level = level

  outputter.formatter = if level < Log4r::INFO
                          debug_formatter
                        else
                          default_formatter
                        end
end

Public Instance Methods

logger() click to toggle source

Return a logger for the current class

@return [Log4r::Logger]

# File lib/dogtrainer/logging.rb, line 16
def logger
  if @logger.nil?
    name = logger_name
    if Log4r::Logger[name]
      @logger = Log4r::Logger[name]
    else
      @logger = Log4r::Logger.new(name)
      @logger.add(DogTrainer::Logging.outputter)
    end
  end
  @logger
end
logger_name() click to toggle source

Return the name of the class this logger is part of

@return [String] logger class name

# File lib/dogtrainer/logging.rb, line 9
def logger_name
  self.class.to_s
end