Class: Log4r::Logger
- Inherits:
-
Object
- Object
- Log4r::Logger
- Defined in:
- lib/log4r/logger.rb,
lib/log4r/repository.rb,
lib/log4r/staticlogger.rb,
lib/log4r/loggerfactory.rb
Overview
See log4r/logger.rb
Direct Known Subclasses
Defined Under Namespace
Classes: LoggerFactory, Repository
Instance Attribute Summary collapse
-
#additive ⇒ Object
Returns the value of attribute additive.
-
#fullname ⇒ Object
readonly
Returns the value of attribute fullname.
-
#level ⇒ Object
Returns the value of attribute level.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#outputters ⇒ Object
Returns the value of attribute outputters.
-
#parent ⇒ Object
Returns the value of attribute parent.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#trace ⇒ Object
Returns the value of attribute trace.
Class Method Summary collapse
-
.[](_fullname) ⇒ Object
Get a logger with a fullname from the repository or nil if logger wasn’t found.
-
.each ⇒ Object
Yields fullname and logger for every logger in the system.
- .each_logger ⇒ Object
-
.get(_fullname) ⇒ Object
Like Logger[] except that it raises NameError if Logger wasn’t found.
-
.global ⇒ Object
Returns the root logger.
-
.log_internal(level = 1) ⇒ Object
Internal logging for Log4r components.
-
.root ⇒ Object
Returns the root logger.
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#add(*_outputters) ⇒ Object
Add outputters by name or by reference.
-
#initialize(_fullname, _level = nil, _additive = true, _trace = false) ⇒ Logger
constructor
Logger requires a name.
- #is_root? ⇒ Boolean
-
#levels ⇒ Object
Return array of defined levels.
-
#remove(*_outputters) ⇒ Object
Remove outputters from this logger by name only.
Constructor Details
#initialize(_fullname, _level = nil, _additive = true, _trace = false) ⇒ Logger
Logger requires a name. The last 3 parameters are:
- level
-
Do I have a level? (Otherwise, I’ll inherit my parent’s)
- additive
-
Am I additive?
- trace
-
Do I record the execution trace? (slows things a wee bit)
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/log4r/logger.rb', line 26 def initialize(_fullname, _level=nil, _additive=true, _trace=false) # validation raise ArgumentError, "Logger must have a name", caller if _fullname.nil? Log4rTools.validate_level(_level) unless _level.nil? validate_name(_fullname) # create the logger @fullname = _fullname @outputters = [] @additive = _additive deal_with_inheritance(_level) LoggerFactory.define_methods(self) self.trace = _trace Repository[@fullname] = self end |
Instance Attribute Details
#additive ⇒ Object
Returns the value of attribute additive.
18 19 20 |
# File 'lib/log4r/logger.rb', line 18 def additive @additive end |
#fullname ⇒ Object (readonly)
Returns the value of attribute fullname.
17 18 19 |
# File 'lib/log4r/logger.rb', line 17 def fullname @fullname end |
#level ⇒ Object
Returns the value of attribute level.
17 18 19 |
# File 'lib/log4r/logger.rb', line 17 def level @level end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
17 18 19 |
# File 'lib/log4r/logger.rb', line 17 def name @name end |
#outputters ⇒ Object
Returns the value of attribute outputters.
18 19 20 |
# File 'lib/log4r/logger.rb', line 18 def outputters @outputters end |
#parent ⇒ Object
Returns the value of attribute parent.
17 18 19 |
# File 'lib/log4r/logger.rb', line 17 def parent @parent end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
17 18 19 |
# File 'lib/log4r/logger.rb', line 17 def path @path end |
#trace ⇒ Object
Returns the value of attribute trace.
18 19 20 |
# File 'lib/log4r/logger.rb', line 18 def trace @trace end |
Class Method Details
.[](_fullname) ⇒ Object
Get a logger with a fullname from the repository or nil if logger wasn’t found.
12 13 14 15 16 |
# File 'lib/log4r/staticlogger.rb', line 12 def self.[](_fullname) # forces creation of RootLogger if it doesn't exist yet. return RootLogger.instance if _fullname=='root' or _fullname=='global' Repository[_fullname] end |
.each ⇒ Object
Yields fullname and logger for every logger in the system.
29 30 31 32 33 |
# File 'lib/log4r/staticlogger.rb', line 29 def self.each for fullname, logger in Repository.instance.loggers yield fullname, logger end end |
.each_logger ⇒ Object
35 36 37 |
# File 'lib/log4r/staticlogger.rb', line 35 def self.each_logger Repository.instance.loggers.each_value {|logger| yield logger} end |
.get(_fullname) ⇒ Object
Like Logger[] except that it raises NameError if Logger wasn’t found.
20 21 22 23 24 25 26 |
# File 'lib/log4r/staticlogger.rb', line 20 def self.get(_fullname) logger = self[_fullname] if logger.nil? raise NameError, "Logger '#{_fullname}' not found.", caller end logger end |
.global ⇒ Object
Returns the root logger. Identical to Logger.root
7 |
# File 'lib/log4r/staticlogger.rb', line 7 def self.global; return root end |
.log_internal(level = 1) ⇒ Object
Internal logging for Log4r components. Accepts only blocks. To see such log events, create a logger named ‘log4r’ and give it an outputter.
43 44 45 46 47 |
# File 'lib/log4r/staticlogger.rb', line 43 def self.log_internal(level=1) internal = Logger['log4r'] return if internal.nil? internal.send(LNAMES[level].downcase, yield) end |
.root ⇒ Object
Returns the root logger. Identical to Logger.global
5 |
# File 'lib/log4r/staticlogger.rb', line 5 def self.root; return RootLogger.instance end |
Instance Method Details
#==(other) ⇒ Object
145 146 147 |
# File 'lib/log4r/logger.rb', line 145 def ==(other) return true if self.object_id == other.object_id end |
#add(*_outputters) ⇒ Object
Add outputters by name or by reference. Can be done any time.
119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/log4r/logger.rb', line 119 def add(*_outputters) for thing in _outputters o = (thing.kind_of?(Outputter) ? thing : Outputter[thing]) # some basic validation if not o.kind_of?(Outputter) raise TypeError, "Expected kind of Outputter, got #{o.class}", caller elsif o.nil? raise TypeError, "Couldn't find Outputter '#{thing}'", caller end @outputters.push o Logger.log_internal {"Added outputter '#{o.name}' to '#{@fullname}'"} end @outputters end |
#is_root? ⇒ Boolean
143 |
# File 'lib/log4r/logger.rb', line 143 def is_root?; false end |
#levels ⇒ Object
Return array of defined levels.
82 83 84 |
# File 'lib/log4r/logger.rb', line 82 def levels LNAMES end |
#remove(*_outputters) ⇒ Object
Remove outputters from this logger by name only. Can be done any time.
135 136 137 138 139 140 141 |
# File 'lib/log4r/logger.rb', line 135 def remove(*_outputters) for name in _outputters o = Outputter[name] @outputters.delete o Logger.log_internal {"Removed outputter '#{o.name}' from '#{@fullname}'"} end end |