Class: Madvertise::Logging::ImprovedLogger
- Inherits:
-
ImprovedIO
- Object
- IO
- ImprovedIO
- Madvertise::Logging::ImprovedLogger
- Includes:
- IOCompat
- Defined in:
- lib/madvertise/logging/improved_logger.rb
Overview
ImprovedLogger is an enhanced version of DaemonKits AbstractLogger class with token support, buffer backend and more.
Defined Under Namespace
Modules: IOCompat Classes: Formatter
Class Attribute Summary collapse
-
.severities ⇒ Object
readonly
Hash of Symbol/Fixnum pairs to map Logger levels.
-
.silencer ⇒ Object
Enable/disable the silencer on a global basis.
Instance Attribute Summary collapse
-
#progname ⇒ Object
Program name prefix.
-
#token ⇒ Object
Arbitrary token to prefix log messages with.
Instance Method Summary collapse
-
#<<(msg) ⇒ Object
(also: #write)
Log an info level message.
-
#buffer ⇒ String
Retrieve the current buffer in case this instance is a buffered logger.
-
#close ⇒ Object
Close any connections/descriptors that may have been opened by the current backend.
-
#debug(msg) ⇒ Object
Log a debug level message.
-
#error(msg) ⇒ Object
Log an error level message.
-
#exception(exc) ⇒ Object
Log an exception with fatal level.
-
#fatal(msg) ⇒ Object
Log a fatal level message.
-
#info(msg) ⇒ Object
Log an info level message.
-
#initialize(backend = STDERR, progname = nil) ⇒ ImprovedLogger
constructor
A new instance of ImprovedLogger.
-
#level ⇒ Symbol
Get the current logging level.
-
#level=(level) ⇒ Fixnum
Set the logging level.
-
#logger ⇒ Logger
Get the backend logger.
-
#logger=(value) ⇒ Logger
Set a different backend.
-
#restore_token(obj) ⇒ Object
Restore the token that has been associated with obj#object_id.
-
#save_token(obj) ⇒ Object
Save the current token and associate it with obj#object_id.
-
#silence(temporary_level = :error) ⇒ Object
Silence the logger for the duration of the block.
-
#unknown(msg) ⇒ Object
Log a message with unknown level.
-
#warn(msg) ⇒ Object
Log a warning level message.
Methods included from IOCompat
#_raise_write_only, #close_read, #close_write, #closed?, #sync, #sync=
Methods inherited from ImprovedIO
#external_encoding, #flush, #internal_encoding, #print, #printf, #putc, #puts, #readbyte, #readchar, #readline, #set_encoding, #tty?
Constructor Details
#initialize(backend = STDERR, progname = nil) ⇒ ImprovedLogger
Returns a new instance of ImprovedLogger.
41 42 43 44 |
# File 'lib/madvertise/logging/improved_logger.rb', line 41 def initialize(backend = STDERR, progname = nil) self.progname = progname || File.basename($0) self.logger = backend end |
Class Attribute Details
.severities ⇒ Object (readonly)
Hash of Symbol/Fixnum pairs to map Logger levels.
34 35 36 |
# File 'lib/madvertise/logging/improved_logger.rb', line 34 def severities @severities end |
.silencer ⇒ Object
Enable/disable the silencer on a global basis. Useful for debugging otherwise silenced code blocks.
38 39 40 |
# File 'lib/madvertise/logging/improved_logger.rb', line 38 def silencer @silencer end |
Instance Attribute Details
#progname ⇒ Object
Program name prefix. Used as ident for syslog backends.
16 17 18 |
# File 'lib/madvertise/logging/improved_logger.rb', line 16 def progname @progname end |
#token ⇒ Object
Arbitrary token to prefix log messages with.
19 20 21 |
# File 'lib/madvertise/logging/improved_logger.rb', line 19 def token @token end |
Instance Method Details
#<<(msg) ⇒ Object Also known as: write
Log an info level message
125 126 127 |
# File 'lib/madvertise/logging/improved_logger.rb', line 125 def <<(msg) add(:info, msg) end |
#buffer ⇒ String
Retrieve the current buffer in case this instance is a buffered logger.
74 75 76 |
# File 'lib/madvertise/logging/improved_logger.rb', line 74 def buffer @logfile.string if @backend == :buffer end |
#close ⇒ Object
Close any connections/descriptors that may have been opened by the current backend.
66 67 68 69 |
# File 'lib/madvertise/logging/improved_logger.rb', line 66 def close @logger.close rescue nil @logger = nil end |
#debug(msg) ⇒ Object
Log a debug level message.
95 96 97 |
# File 'lib/madvertise/logging/improved_logger.rb', line 95 def debug(msg) add(:debug, msg) end |
#error(msg) ⇒ Object
Log an error level message.
110 111 112 |
# File 'lib/madvertise/logging/improved_logger.rb', line 110 def error(msg) add(:error, msg) end |
#exception(exc) ⇒ Object
Log an exception with fatal level.
135 136 137 138 |
# File 'lib/madvertise/logging/improved_logger.rb', line 135 def exception(exc) exc = "EXCEPTION: #{exc.}: #{clean_trace(exc.backtrace)}" if exc.is_a?(::Exception) add(:fatal, exc, true) end |
#fatal(msg) ⇒ Object
Log a fatal level message.
115 116 117 |
# File 'lib/madvertise/logging/improved_logger.rb', line 115 def fatal(msg) add(:fatal, msg) end |
#info(msg) ⇒ Object
Log an info level message.
100 101 102 |
# File 'lib/madvertise/logging/improved_logger.rb', line 100 def info(msg) add(:info, msg) end |
#level ⇒ Symbol
Get the current logging level.
81 82 83 |
# File 'lib/madvertise/logging/improved_logger.rb', line 81 def level self.class.severities.invert[@logger.level] end |
#level=(level) ⇒ Fixnum
Set the logging level.
89 90 91 92 |
# File 'lib/madvertise/logging/improved_logger.rb', line 89 def level=(level) level = level.is_a?(Symbol) ? self.class.severities[level] : level logger.level = level end |
#logger ⇒ Logger
Get the backend logger.
49 50 51 |
# File 'lib/madvertise/logging/improved_logger.rb', line 49 def logger @logger ||= create_backend end |
#logger=(value) ⇒ Logger
Set a different backend.
59 60 61 62 |
# File 'lib/madvertise/logging/improved_logger.rb', line 59 def logger=(value) @backend = value create_backend end |
#restore_token(obj) ⇒ Object
Restore the token that has been associated with obj#object_id.
149 150 151 152 |
# File 'lib/madvertise/logging/improved_logger.rb', line 149 def restore_token(obj) @tokens ||= {} @token = @tokens.delete(obj.object_id) end |
#save_token(obj) ⇒ Object
Save the current token and associate it with obj#object_id.
141 142 143 144 145 146 |
# File 'lib/madvertise/logging/improved_logger.rb', line 141 def save_token(obj) if @token @tokens ||= {} @tokens[obj.object_id] = @token end end |
#silence(temporary_level = :error) ⇒ Object
Silence the logger for the duration of the block.
155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/madvertise/logging/improved_logger.rb', line 155 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) ⇒ Object
Log a message with unknown level.
120 121 122 |
# File 'lib/madvertise/logging/improved_logger.rb', line 120 def unknown(msg) add(:unknown, msg) end |
#warn(msg) ⇒ Object
Log a warning level message.
105 106 107 |
# File 'lib/madvertise/logging/improved_logger.rb', line 105 def warn(msg) add(:warn, msg) end |