Monitor
Retrieve an outputter.
# File lib/log4r/outputter/staticoutputter.rb, line 6 def self.[](name) out = @@outputters[name] if out.nil? return case name when 'stdout' then StdoutOutputter.new 'stdout' when 'stderr' then StderrOutputter.new 'stderr' else nil end end out end
Set an outputter.
# File lib/log4r/outputter/staticoutputter.rb, line 19 def self.[]=(name, outputter) @@outputters[name] = outputter end
Yields each outputter's name and reference.
# File lib/log4r/outputter/staticoutputter.rb, line 23 def self.each @@outputters.each {|name, outputter| yield name, outputter} end
# File lib/log4r/outputter/staticoutputter.rb, line 26 def self.each_outputter @@outputters.each_value {|outputter| yield outputter} end
An Outputter needs a name. RootLogger will be loaded if not already done. The hash arguments are as follows:
Logger level. Optional, defaults to root level
A Formatter. Defaults to DefaultFormatter
# File lib/log4r/outputter/outputter.rb, line 28 def initialize(_name, hash={}) super() if _name.nil? raise ArgumentError, "Bad arguments. Name and IO expected.", caller end @name = _name validate_hash(hash) @@outputters[@name] = self end
Call flush to force an outputter to write out any buffered log events. Similar to IO#flush, so use in a similar fashion.
# File lib/log4r/outputter/outputter.rb, line 81 def flush end
Dynamically change the formatter. You can just specify a Class object and the formatter will invoke new or instance on it as appropriate.
# File lib/log4r/outputter/outputter.rb, line 63 def formatter=(_formatter) if _formatter.kind_of?(Formatter) @formatter = _formatter elsif _formatter.kind_of?(Class) and _formatter <= Formatter if _formatter.respond_to? :instance @formatter = _formatter.instance else @formatter = _formatter.new end else raise TypeError, "Argument was not a Formatter!", caller end Logger.log_internal {"Outputter '#{@name}' using #{@formatter.class}"} end
dynamically change the level
# File lib/log4r/outputter/outputter.rb, line 39 def level=(_level) Log4rTools.validate_level(_level) @level = _level OutputterFactory.create_methods(self) Logger.log_internal {"Outputter '#{@name}' level is #{LNAMES[_level]}"} end
Set the levels to log. All others will be ignored
# File lib/log4r/outputter/outputter.rb, line 47 def only_at(*levels) raise ArgumentError, "Gimme some levels!", caller if levels.empty? raise ArgumentError, "Can't log only_at ALL", caller if levels.include? ALL levels.each {|level| Log4rTools.validate_level(level)} @level = levels.sort.first OutputterFactory.create_methods self, levels Logger.log_internal { "Outputter '#{@name}' writes only on " + levels.collect{|l| LNAMES[l]}.join(", ") } end
Validates the common hash arguments. For now, that would be :level, :formatter and the string equivalents
# File lib/log4r/outputter/outputter.rb, line 90 def validate_hash(hash) # default to root level and DefaultFormatter if hash.empty? self.level = Logger.root.level @formatter = DefaultFormatter.new return end self.level = (hash[:level] or hash['level'] or Logger.root.level) self.formatter = (hash[:formatter] or hash['formatter'] or DefaultFormatter.new) end
Generated with the Darkfish Rdoc Generator 2.