Parent

DaemonKit::AbstractLogger

One of the key parts of succesful background processes is adequate logging. The AbstractLogger aims to simplify logging from inside daemon processes by providing additional useful information with each log line, including calling file name and line number and support for cleanly logging exceptions.

The logger can be accessed through #DaemonKit.logger.

AbstractLogger provides an interface that is fully compatible with the Logger class provided by Ruby's Standard Library, and is extended with some additional conveniences.

The AbstractLogger supports different backends, by default it uses a Logger instance, but can by swapped out for a SysLogLogger logger as well.

Attributes

severities[R]
silencer[RW]
copy_to_stdout[RW]

Public Class Methods

new( log_path = nil ) click to toggle source

Optional log path, defaults to DAEMON_ROOT/log/DAEMON_ENV.log

# File lib/daemon_kit/abstract_logger.rb, line 41
def initialize( log_path = nil )
  if log_path.to_s == "syslog"
    @backend = :syslog
  else
    @logger_file = log_path || "#{DAEMON_ROOT}/log/#{DAEMON_ENV}.log"
    @backend = :logger
  end

  @copy_to_stdout = false
end

Public Instance Methods

add( severity, message, skip_caller = false ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 125
def add( severity, message, skip_caller = false )
  message = "#{called(caller)}: #{message}" unless skip_caller

  self.logger.add( self.class.severities[ severity ] ) { message }

  STDOUT.puts( message ) if self.copy_to_stdout
end
clean_trace( trace ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 157
def clean_trace( trace )
  trace = trace.map { |l| l.gsub(DAEMON_ROOT, '') }
  trace = trace.reject { |l| l =~ /gems\/daemon[\-_]kit/ }
  trace = trace.reject { |l| l =~ /vendor\/daemon[\-_]kit/ }
  trace
end
close() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 164
def close
  case @backend
  when :logger
    self.logger.close
    @logger = nil
  end
end
debug( msg ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 72
def debug( msg )
  add( :debug, msg )
end
debug?() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 76
def debug?
  self.level == :debug
end
error( msg ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 96
def error( msg )
  add( :error, msg )
end
error?() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 100
def error?
  self.level == :error
end
exception( e ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 120
def exception( e )
  message = "EXCEPTION: #{e.message}: #{clean_trace( e.backtrace )}"
  self.add( :error, message, true )
end
fatal( msg ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 104
def fatal( msg )
  add( :fatal, msg )
end
fatal?() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 108
def fatal?
  self.level == :fatal
end
info( msg ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 80
def info( msg )
  add( :info, msg )
end
info?() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 84
def info?
  self.level == :info
end
level() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 133
def level
  self.class.severities.invert[ @logger.level ]
end
level=( level ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 137
def level=( level )
  level = ( Symbol === level ? self.class.severities[ level ] : level )
  self.logger.level = level
end
logger() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 142
def logger
  @logger ||= create_logger
end
logger=( logger ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 146
def logger=( logger )
  if logger.is_a?( Symbol )
    @backend = logger
    @logger.close rescue nil
    @logger = create_logger
  else
    @logger.close rescue nil
    @logger = logger
  end
end
silence( temporary_level = :error ) click to toggle source

Silence the logger for the duration of the block.

# File lib/daemon_kit/abstract_logger.rb, line 53
def silence( temporary_level = :error )
  if self.class.silencer
    begin
      old_level, self.level = self.level, temporary_level
      yield self
    ensure
      self.level = old_level
    end
  else
    yield self
  end
end
unknown( msg ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 112
def unknown( msg )
  add( :unknown, msg )
end
unknown?() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 116
def unknown?
  self.level == :unknown
end
warn( msg ) click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 88
def warn( msg )
  add( :warn, msg )
end
warn?() click to toggle source
# File lib/daemon_kit/abstract_logger.rb, line 92
def warn?
  self.level == :warn
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.