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.
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
# 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
# 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
# File lib/daemon_kit/abstract_logger.rb, line 164 def close case @backend when :logger self.logger.close @logger = nil end end
# File lib/daemon_kit/abstract_logger.rb, line 72 def debug( msg ) add( :debug, msg ) end
# File lib/daemon_kit/abstract_logger.rb, line 76 def debug? self.level == :debug end
# File lib/daemon_kit/abstract_logger.rb, line 96 def error( msg ) add( :error, msg ) end
# File lib/daemon_kit/abstract_logger.rb, line 100 def error? self.level == :error end
# 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
# File lib/daemon_kit/abstract_logger.rb, line 104 def fatal( msg ) add( :fatal, msg ) end
# File lib/daemon_kit/abstract_logger.rb, line 108 def fatal? self.level == :fatal end
# File lib/daemon_kit/abstract_logger.rb, line 80 def info( msg ) add( :info, msg ) end
# File lib/daemon_kit/abstract_logger.rb, line 84 def info? self.level == :info end
# File lib/daemon_kit/abstract_logger.rb, line 133 def level self.class.severities.invert[ @logger.level ] end
# 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
# File lib/daemon_kit/abstract_logger.rb, line 142 def logger @logger ||= create_logger end
# 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 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
# File lib/daemon_kit/abstract_logger.rb, line 112 def unknown( msg ) add( :unknown, msg ) end
# File lib/daemon_kit/abstract_logger.rb, line 116 def unknown? self.level == :unknown end
Generated with the Darkfish Rdoc Generator 2.