Monitor
Retrieve an outputter.
# File lib/log4r/outputter/staticoutputter.rb, line 6 6: def self.[](name) 7: out = @@outputters[name] 8: if out.nil? 9: return case name 10: when 'stdout' then StdoutOutputter.new 'stdout' 11: when 'stderr' then StderrOutputter.new 'stderr' 12: else nil end 13: end 14: out 15: end
Set an outputter.
# File lib/log4r/outputter/staticoutputter.rb, line 19 19: def self.[]=(name, outputter) 20: @@outputters[name] = outputter 21: end
Yields each outputter’s name and reference.
# File lib/log4r/outputter/staticoutputter.rb, line 23 23: def self.each 24: @@outputters.each {|name, outputter| yield name, outputter} 25: end
# File lib/log4r/outputter/staticoutputter.rb, line 26 26: def self.each_outputter 27: @@outputters.each_value {|outputter| yield outputter} 28: 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 28: def initialize(_name, hash={}) 29: super() 30: if _name.nil? 31: raise ArgumentError, "Bad arguments. Name and IO expected.", caller 32: end 33: @name = _name 34: validate_hash(hash) 35: @@outputters[@name] = self 36: 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 81: def flush 82: 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 63: def formatter=(_formatter) 64: if _formatter.kind_of?(Formatter) 65: @formatter = _formatter 66: elsif _formatter.kind_of?(Class) and _formatter <= Formatter 67: if _formatter.respond_to? :instance 68: @formatter = _formatter.instance 69: else 70: @formatter = _formatter.new 71: end 72: else 73: raise TypeError, "Argument was not a Formatter!", caller 74: end 75: Logger.log_internal {"Outputter '#{@name}' using #{@formatter.class}"} 76: end
dynamically change the level
# File lib/log4r/outputter/outputter.rb, line 39 39: def level=(_level) 40: Log4rTools.validate_level(_level) 41: @level = _level 42: OutputterFactory.create_methods(self) 43: Logger.log_internal {"Outputter '#{@name}' level is #{LNAMES[_level]}"} 44: end
Set the levels to log. All others will be ignored
# File lib/log4r/outputter/outputter.rb, line 47 47: def only_at(*levels) 48: raise ArgumentError, "Gimme some levels!", caller if levels.empty? 49: raise ArgumentError, "Can't log only_at ALL", caller if levels.include? ALL 50: levels.each {|level| Log4rTools.validate_level(level)} 51: @level = levels.sort.first 52: OutputterFactory.create_methods self, levels 53: Logger.log_internal { 54: "Outputter '#{@name}' writes only on " + levels.collect{|l| LNAMES[l]}.join(", ") 55: } 56: 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 90: def validate_hash(hash) 91: # default to root level and DefaultFormatter 92: if hash.empty? 93: self.level = Logger.root.level 94: @formatter = DefaultFormatter.new 95: return 96: end 97: self.level = (hash[:level] or hash['level'] or Logger.root.level) 98: self.formatter = (hash[:formatter] or hash['formatter'] or DefaultFormatter.new) 99: end
This method handles all log events passed to a typical Outputter. Overload this to change the overall behavior of an outputter. Make sure that the new behavior is thread safe.
# File lib/log4r/outputter/outputter.rb, line 109 109: def canonical_log(logevent) 110: synch { write(format(logevent)) } 111: end
Common method to format data. All it does is call the resident formatter’s format method. If a different formatting behavior is needed, then overload this method.
# File lib/log4r/outputter/outputter.rb, line 117 117: def format(logevent) 118: # @formatter is guaranteed to be DefaultFormatter if no Formatter 119: # was specified 120: @formatter.format(logevent) 121: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.