Module: Logging
- Included in:
- ArgParser, Configuration, HTML2Index, TClass, TClass, Template
- Defined in:
- lib/logging.rb
Overview
of the object. Example for a class-level logger: # ——————– class TClass
self.extend(Logging)
@@log = init_logger(STDOUT)
def test_log
@@log.info('class-level logger called from instance: ' << @@log.to_s)
@log = @@log
@log.info('AGAIN: class-level logger called from instance: ' << @log.to_s)
end
def self::test_log
@log.info('class-level logger called from class: ' << @log.to_s)
@@log.info('AGAIN: class-level logger called from class: ' << @@log.to_s)
end
end #——————— Example for a object-level logger: ATTN! This means 1 logger per object. # ——————– class TClass
include Logging
def initialize
init_logger(STDOUT, Logger::DEBUG)
end
def test_log
@log.debug('called test_log() ')
end
end
Constant Summary collapse
- @@LEVELS =
{:debug => Logger::DEBUG, :info => Logger::INFO, :error => Logger::ERROR, :warn => Logger::WARN, :unknown => Logger::UNKNOWN, :fatal => Logger::FATAL}
- @@have_log =
false- @@LOG_CONF =
File.dirname(File.absolute_path(__FILE__)) << File::Separator << 'log.conf'
Instance Method Summary collapse
-
#debout(str) ⇒ Object
brutal log-function: print message, than exit.
- #formatter(classname) ⇒ Object
-
#init_logger(target = STDOUT, level = Logger::INFO) ⇒ Object
Call this method in an instance-method (e.g. initialize() ) to define the object-level logger; i.e.
-
#log_level=(level) ⇒ Object
set the log-level.
-
#log_level?(level) ⇒ Boolean
verify log level.
-
#log_target=(target) ⇒ Object
Set the log-target to an IO object.
Instance Method Details
#debout(str) ⇒ Object
brutal log-function: print message, than exit.
118 119 120 121 |
# File 'lib/logging.rb', line 118 def debout(str) puts self.class.name.dup << " DEBOUT: " << str exit true end |
#formatter(classname) ⇒ Object
91 92 93 94 95 96 |
# File 'lib/logging.rb', line 91 def formatter(classname) proc do |severity, datetime, progname, msg| t = Time.now "#{classname} (#{__LINE__}): #{severity} #{t.hour}-#{t.min}-#{t.sec}: #{msg}\n" end end |
#init_logger(target = STDOUT, level = Logger::INFO) ⇒ Object
Call this method in an instance-method (e.g. initialize() ) to define the object-level logger; i.e. an object-specific member @log. Call this method within the class-definition for a class-level logger; i.e. a member @log for class-level acces. The method returns the logger, so you can actually do what you want with it.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/logging.rb', line 67 def init_logger(target = STDOUT, level = Logger::INFO) # Prepare for a class-level logger. This is actually quite cool. # ---> Ingeniuous code starts here cn = (self.class == Class ? name : self.class.name) # <--- Ingeniuous code ends here # allow to override the set log-levels with an # external configuration (log.conf). log_conf(cn) # Or use the defaults as set here or elsewhere... @level ||= level @target ||= target @log = Logger.new(@target) @log.level = @level @log.formatter = formatter(cn) if ! @@have_log @log.debug cn.dup << ' reading logging-configuration from ' << @@LOG_CONF @@have_log = true @log.debug('level is ' << level.to_s) end return @log end |
#log_level=(level) ⇒ Object
set the log-level
107 108 109 110 |
# File 'lib/logging.rb', line 107 def log_level=(level) @level = level @log.level = @level end |
#log_level?(level) ⇒ Boolean
verify log level
113 114 115 |
# File 'lib/logging.rb', line 113 def log_level?(level) return @log.level == level end |
#log_target=(target) ⇒ Object
Set the log-target to an IO object.
99 100 101 102 103 |
# File 'lib/logging.rb', line 99 def log_target=(target) @target = target @log = Logger.new(@target) @log.level = @level end |