class EasyLog4r::Logger
Class that creates Log4r::Loggers with some basic defaults and also modifies base classes to referece said Loggers.
Public Class Methods
Adds log4r class variable, as well as Base::log4r and Base#log4r
# File lib/easy_log4r/logger.rb, line 11 def self.add_logger(base, logger) base.class_variable_set(:@@log4r, logger) base.class_eval do def log4r; self.class.log4r; end def self.log4r; class_variable_get(:@@log4r); end end end
Gathers all Log4r::Outputters defined in the user defined configuration file.
# File lib/easy_log4r/logger.rb, line 55 def self.configured_default_outputters Log4r::Outputter.default_outputters end
Creates or returns the default formatter.
The formatter is a Log4r::PatternFormatter with the following pattern:
"[%l] %d @@%c :: %m"
For example:
Base.log4r.info("This is only a test") => [INFO] 2012-07-30 12:00:00 PM @@Base :: This is only a test
# File lib/easy_log4r/logger.rb, line 76 def self.default_formatter return @formatter if @formatter @formatter = Log4r::PatternFormatter.new(:pattern => "[%l] %d @@%c :: %m") return @formatter end
Provides the default Loggers, which are null_loggers with the default outputters.
# File lib/easy_log4r/logger.rb, line 21 def self.default_logger(name) logger = null_logger(name) logger.outputters = default_outputters return logger end
- Takes a name and
Logger
class and gives back a predefined logger, or a new instance of the givenLog4r
-
class
# File lib/easy_log4r/logger.rb, line 45 def self.default_outputter(name, clas) clas = Log4r.instance_eval{ clas } out = Log4r::Outputter[name] out = clas.new(name, :formatter => default_formatter) unless out return out end
Creates or returns default outputters.
Those outputters are a Log4r::StdoutOutputter and a Log4r::StderrOutputter, both of which have a default Log4r::Formatter
# File lib/easy_log4r/logger.rb, line 32 def self.default_outputters return @outputters if @outputters @outputters = [] @outputters << configured_default_outputters @outputters << standard_outputters if @outputters.empty? @outputters.flatten! return @outputters end
Given a Class, this will return either an existing Log4r::Logger, that could be defined via XML or YAML options, or a fresh new logger, that has the name of the class, as represented by Class.to_s, as its name.
If the second option is given any value which resolves to true, it will provide a Log4r::Logger with no Outputters.
# File lib/easy_log4r/logger.rb, line 96 def self.get_logger(base, null=false) clas = base.to_s logger = null ? null_logger(clas) : Log4r::Logger[clas] return logger || default_logger(clas) end
# File lib/easy_log4r/logger.rb, line 15 def self.log4r; class_variable_get(:@@log4r); end
Creates a Log4r::Logger with the given name and clears all Outputters
# File lib/easy_log4r/logger.rb, line 85 def self.null_logger(name) logger = Log4r::Logger.new(name) logger.outputters = [] return logger end
Defines two standard outputters, one which prints to stdout at all levels, and one which prints to stderr for error and fatal levels.
# File lib/easy_log4r/logger.rb, line 61 def self.standard_outputters @outputters << default_outputter('formatted_stdout', StdoutOutputter) @outputters << default_outputter('formatted_stderr', StderrOutputter) Log4r::Outputter['formatted_stderr'].level = :error end
Public Instance Methods
# File lib/easy_log4r/logger.rb, line 14 def log4r; self.class.log4r; end