Class: Log4Ruby::Logger

Inherits:
Object
  • Object
show all
Defined in:
lib/log4ruby/logger.rb

Overview

Represents a logger. Loggers are arranged into a tree, where each logger, after having dispatched the log to its appenders, forwards the log to its parents too.

Direct Known Subclasses

RootLogger

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, parent = nil, level = nil, appenders = []) ⇒ Logger

Creates a new logger. Users should not use this method, and should use the Log4Ruby.get_logger method.

(defaults to DEBUG for the root logger).

Parameters:

  • name (String)

    the name for this logger.

  • parent (Log4Ruby::Logger) (defaults to: nil)

    the parent to this logger. If set to nil, becomes the child of the root logger.

  • level (Log4Ruby::Level) (defaults to: nil)

    the level of this logger. If set to nil, uses the parent’s effective level

  • appenders (Array) (defaults to: [])

    a list of appenders this logger will use.



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/log4ruby/logger.rb', line 31

def initialize(name, parent = nil, level = nil, appenders = [])
  @name = name
  @parent = parent.nil? ? RootLogger.instance : parent
  @level = level
  @appenders = appenders
  @children = {}
  @closed = false

  @use_parent_appenders = true
  @full_name = @parent.kind_of?(RootLogger) ? @name : @parent.full_name + "." + @name
  @effective_level = level.nil? ? @parent.effective_level : level
end

Instance Attribute Details

#effective_levelObject (readonly)

The effective level of this logger. This will be the parent’s effective level if a level has not been explicitly set for this logger.



16
17
18
# File 'lib/log4ruby/logger.rb', line 16

def effective_level
  @effective_level
end

#full_nameObject (readonly)

The full name of this logger.



18
19
20
# File 'lib/log4ruby/logger.rb', line 18

def full_name
  @full_name
end

#nameObject (readonly)

The name of this logger.



20
21
22
# File 'lib/log4ruby/logger.rb', line 20

def name
  @name
end

#use_parent_appenders=(value) ⇒ Object (writeonly)

True to use parent appenders (the default) false to use only this logger’s appenders.



22
23
24
# File 'lib/log4ruby/logger.rb', line 22

def use_parent_appenders=(value)
  @use_parent_appenders = value
end

Instance Method Details

#add_appender(appender) ⇒ Object

Adds an appender to this logger.

Parameters:



47
48
49
# File 'lib/log4ruby/logger.rb', line 47

def add_appender(appender)
  @appenders << appender
end

#closeTrueClass

Shuts down this logger. It will no longer dispatch logs to its appenders, not will it forward logs to its parent.

Returns:

  • (TrueClass)

    Always true.



54
55
56
# File 'lib/log4ruby/logger.rb', line 54

def close
  @closed = true
end

#closed?TrueClass, FalseClass

Check if this logger is closed.

Returns:

  • (TrueClass, FalseClass)

    true if the logger is closed.



61
62
63
# File 'lib/log4ruby/logger.rb', line 61

def closed?
  @closed
end

#get_logger(name, create = false) ⇒ Object

Gets a child logger with the specified name. If the create flag is true, it will create a new logger with this name.

Parameters:

  • name (String)

    the name of the logger.

  • create (TrueClass, FalseClass) (defaults to: false)

    if true, create a logger if it does not exist.



70
71
72
73
74
75
76
77
78
# File 'lib/log4ruby/logger.rb', line 70

def get_logger(name, create = false)
  if @children.has_key?(name)
    @children[name]
  elsif create
    @children[name] = Logger.new(name, self)
  else
    raise Log4Ruby::LoggerNotFoundError.new("Logger '#{name}' does not exist under '#@full_name'!")
  end
end

#set_level(new_level) ⇒ Object

Update this logger’s level. This will update the effective level for all child loggers too (except for the ones that have had their level explicitly set.

Parameters:



84
85
86
87
88
# File 'lib/log4ruby/logger.rb', line 84

def set_level(new_level)
  @level = new_level
  @effective_level = new_level
  @children.each_value { |logger| logger.update_effective_level(new_level) }
end

#to_sString

Returns the full name of the logger.

Returns:

  • (String)

    the full name of the logger.



93
94
95
# File 'lib/log4ruby/logger.rb', line 93

def to_s
  @full_name
end