Class: Kitchen::Logger
- Inherits:
-
Object
- Object
- Kitchen::Logger
- Includes:
- Logger::Severity
- Defined in:
- lib/kitchen/logger.rb
Overview
Logging implementation for Kitchen. By default the console/stdout output
will be displayed differently than the file log output. Therefor, this
class wraps multiple loggers that conform to the stdlib Logger class
behavior.
Defined Under Namespace
Classes: DeviceFactory, LineBuffer, LogdevLogger, SinkSet, StdoutLogger, StreamLineFormatter, StructuredLogdevLogger
Instance Attribute Summary collapse
-
#log_overwrite ⇒ Boolean
readonly
Whether logger is configured for overwriting.
-
#logdev ⇒ IO
readonly
The log device.
-
#logdev_path ⇒ String?
readonly
The expanded text log path, if configured.
-
#structured_logdev ⇒ IO
readonly
The structured log device.
-
#structured_logdev_path ⇒ String?
readonly
The expanded structured log path, if configured.
Instance Method Summary collapse
-
#:<<(: <<()) ⇒ Object
Dump one or more messages to info.
-
#add ⇒ Object
Log a message if the given severity is high enough.
-
#banner { ... } ⇒ nil, true
Log a message with severity of banner (high level).
-
#close ⇒ Object
Close the logging devices.
-
#datetime_format ⇒ String
The date format being used.
-
#datetime_format= ⇒ Object
Sets the date format being used.
-
#debug { ... } ⇒ nil, true
Log a message with severity of debug.
-
#debug? ⇒ true, false
Whether or not the current severity level allows for the printing of debug messages.
-
#error { ... } ⇒ nil, true
Log a message with severity of error.
-
#error? ⇒ true, false
Whether or not the current severity level allows for the printing of error messages.
-
#fatal { ... } ⇒ nil, true
Log a message with severity of fatal.
-
#fatal? ⇒ true, false
Whether or not the current severity level allows for the printing of fatal messages.
-
#info { ... } ⇒ nil, true
Log a message with severity of info.
-
#info? ⇒ true, false
Whether or not the current severity level allows for the printing of info messages.
-
#initialize(options = {}) ⇒ Logger
constructor
Constructs a new logger.
-
#level ⇒ Integer
The logging severity threshold.
-
#level= ⇒ Object
Sets the logging severity threshold.
-
#metadata ⇒ Hash
Metadata added to structured log events.
-
#progname ⇒ String
Program name to include in log messages.
-
#progname= ⇒ Object
Sets the program name to include in log messages.
-
#unknown { ... } ⇒ nil, true
Log a message with severity of unknown.
-
#warn { ... } ⇒ nil, true
Log a message with severity of warn.
-
#warn? ⇒ true, false
Whether or not the current severity level allows for the printing of warn messages.
-
#with_metadata(values) ⇒ Object
Temporarily adds metadata to structured log events.
Constructor Details
#initialize(options = {}) ⇒ Logger
Constructs a new logger.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/kitchen/logger.rb', line 68 def initialize( = {}) @base_metadata = [:metadata] || {} @log_overwrite = if [:log_overwrite].nil? default_log_overwrite else [:log_overwrite] end @logdev = device_factory.logdev_logger([:logdev], log_overwrite) if [:logdev] if [:structured_logdev] @structured_logdev = device_factory.structured_logdev_logger( [:structured_logdev], log_overwrite, -> { } ) end @logdev_path = ([:logdev]) @structured_logdev_path = ([:structured_logdev]) populate_loggers() # These setters cannot be called until @loggers are populated because # they are delegated self.progname = [:progname] || "Kitchen" self.level = [:level] || default_log_level end |
Instance Attribute Details
#log_overwrite ⇒ Boolean (readonly)
Returns whether logger is configured for overwriting.
47 48 49 |
# File 'lib/kitchen/logger.rb', line 47 def log_overwrite @log_overwrite end |
#logdev ⇒ IO (readonly)
Returns the log device.
34 35 36 |
# File 'lib/kitchen/logger.rb', line 34 def logdev @logdev end |
#logdev_path ⇒ String? (readonly)
Returns the expanded text log path, if configured.
40 41 42 |
# File 'lib/kitchen/logger.rb', line 40 def logdev_path @logdev_path end |
#structured_logdev ⇒ IO (readonly)
Returns the structured log device.
37 38 39 |
# File 'lib/kitchen/logger.rb', line 37 def structured_logdev @structured_logdev end |
#structured_logdev_path ⇒ String? (readonly)
Returns the expanded structured log path, if configured.
43 44 45 |
# File 'lib/kitchen/logger.rb', line 43 def structured_logdev_path @structured_logdev_path end |
Instance Method Details
#:<<(: <<()) ⇒ Object
Dump one or more messages to info.
167 |
# File 'lib/kitchen/logger.rb', line 167 delegate_to_all_loggers :<< |
#add ⇒ Object
Log a message if the given severity is high enough.
161 |
# File 'lib/kitchen/logger.rb', line 161 delegate_to_all_loggers :add |
#banner { ... } ⇒ nil, true
Log a message with severity of banner (high level).
180 |
# File 'lib/kitchen/logger.rb', line 180 delegate_to_all_loggers :banner |
#close ⇒ Object
Close the logging devices.
288 |
# File 'lib/kitchen/logger.rb', line 288 delegate_to_all_loggers :close |
#datetime_format ⇒ String
Returns the date format being used.
150 |
# File 'lib/kitchen/logger.rb', line 150 delegate_to_first_logger :datetime_format |
#datetime_format= ⇒ Object
Sets the date format being used.
156 |
# File 'lib/kitchen/logger.rb', line 156 delegate_to_all_loggers :datetime_format= |
#debug { ... } ⇒ nil, true
Log a message with severity of debug.
193 |
# File 'lib/kitchen/logger.rb', line 193 delegate_to_all_loggers :debug |
#debug? ⇒ true, false
Returns whether or not the current severity level allows for the printing of debug messages.
198 |
# File 'lib/kitchen/logger.rb', line 198 delegate_to_first_logger :debug? |
#error { ... } ⇒ nil, true
Log a message with severity of error.
229 |
# File 'lib/kitchen/logger.rb', line 229 delegate_to_all_loggers :error |
#error? ⇒ true, false
Returns whether or not the current severity level allows for the printing of error messages.
234 |
# File 'lib/kitchen/logger.rb', line 234 delegate_to_first_logger :error? |
#fatal { ... } ⇒ nil, true
Log a message with severity of fatal.
265 |
# File 'lib/kitchen/logger.rb', line 265 delegate_to_all_loggers :fatal |
#fatal? ⇒ true, false
Returns whether or not the current severity level allows for the printing of fatal messages.
270 |
# File 'lib/kitchen/logger.rb', line 270 delegate_to_first_logger :fatal? |
#info { ... } ⇒ nil, true
Log a message with severity of info.
211 |
# File 'lib/kitchen/logger.rb', line 211 delegate_to_all_loggers :info |
#info? ⇒ true, false
Returns whether or not the current severity level allows for the printing of info messages.
216 |
# File 'lib/kitchen/logger.rb', line 216 delegate_to_first_logger :info? |
#level ⇒ Integer
Returns the logging severity threshold.
130 |
# File 'lib/kitchen/logger.rb', line 130 delegate_to_first_logger :level |
#level= ⇒ Object
Sets the logging severity threshold.
136 |
# File 'lib/kitchen/logger.rb', line 136 delegate_to_all_loggers :level= |
#metadata ⇒ Hash
Returns metadata added to structured log events.
291 292 293 294 295 |
# File 'lib/kitchen/logger.rb', line 291 def .inject(@base_metadata.dup) do |result, values| result.merge(values) end end |
#progname ⇒ String
Returns program name to include in log messages.
140 |
# File 'lib/kitchen/logger.rb', line 140 delegate_to_first_logger :progname |
#progname= ⇒ Object
Sets the program name to include in log messages.
146 |
# File 'lib/kitchen/logger.rb', line 146 delegate_to_all_loggers :progname= |
#unknown { ... } ⇒ nil, true
Log a message with severity of unknown.
283 |
# File 'lib/kitchen/logger.rb', line 283 delegate_to_all_loggers :unknown |
#warn { ... } ⇒ nil, true
Log a message with severity of warn.
247 |
# File 'lib/kitchen/logger.rb', line 247 delegate_to_all_loggers :warn |
#warn? ⇒ true, false
Returns whether or not the current severity level allows for the printing of warn messages.
252 |
# File 'lib/kitchen/logger.rb', line 252 delegate_to_first_logger :warn? |
#with_metadata(values) ⇒ Object
Temporarily adds metadata to structured log events.
300 301 302 303 304 305 |
# File 'lib/kitchen/logger.rb', line 300 def (values) .push(values.compact) yield ensure .pop end |