Parent

Log4r::Outputter

Attributes

name[R]
level[R]
formatter[R]

Public Class Methods

[](name) click to toggle source

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
[]=(name, outputter) click to toggle source

Set an outputter.

    # File lib/log4r/outputter/staticoutputter.rb, line 19
19:     def self.[]=(name, outputter)
20:       @@outputters[name] = outputter
21:     end
each() click to toggle source

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
each_outputter() click to toggle source
    # File lib/log4r/outputter/staticoutputter.rb, line 26
26:     def self.each_outputter
27:       @@outputters.each_value {|outputter| yield outputter}
28:     end
new(_name, hash={}) click to toggle source

An Outputter needs a name. RootLogger will be loaded if not already done. The hash arguments are as follows:

:level

Logger level. Optional, defaults to root level

:formatter

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
stderr() click to toggle source
    # File lib/log4r/outputter/staticoutputter.rb, line 17
17:     def self.stderr; Outputter['stderr'] end
stdout() click to toggle source
    # File lib/log4r/outputter/staticoutputter.rb, line 16
16:     def self.stdout; Outputter['stdout'] end

Public Instance Methods

flush() click to toggle source

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
formatter=(_formatter) click to toggle source

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
level=(_level) click to toggle source

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
only_at(*levels) click to toggle source

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

Protected Instance Methods

validate_hash(hash) click to toggle source

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

Private Instance Methods

canonical_log(logevent) click to toggle source

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
format(logevent) click to toggle source

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
synch() click to toggle source
     # File lib/log4r/outputter/outputter.rb, line 130
130:     def synch; synchronize { yield } end
write(data) click to toggle source

Abstract method to actually write the data to a destination. Custom outputters should overload this to specify how the formatted data should be written and to where.

     # File lib/log4r/outputter/outputter.rb, line 127
127:     def write(data)
128:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.