Class: BufferingLogger::Logger
- Inherits:
-
Logger
- Object
- Logger
- BufferingLogger::Logger
- Includes:
- ActiveSupport::LoggerSilence
- Defined in:
- lib/buffering_logger/logger.rb
Overview
Buffering happens within a #buffered block, like:
logger.buffered { logger.info 'hi'; logger.info 'goodbye' }
Buffering is implemented by wrapping the logger @logdev object with a Buffer.
Instance Attribute Summary collapse
-
#default_transform ⇒ Object
Returns the value of attribute default_transform.
-
#raw_log_device ⇒ Object
readonly
Returns the value of attribute raw_log_device.
Instance Method Summary collapse
- #buffered(transform: default_transform) ⇒ Object
-
#initialize(logdev, shift_age: 0, shift_size: 1048576) ⇒ Logger
constructor
A new instance of Logger.
-
#logdev=(logdev) ⇒ Object
allow changing the log destination.
Constructor Details
#initialize(logdev, shift_age: 0, shift_size: 1048576) ⇒ Logger
Returns a new instance of Logger.
13 14 15 16 17 18 |
# File 'lib/buffering_logger/logger.rb', line 13 def initialize(logdev, shift_age: 0, shift_size: 1048576) @shift_age, @shift_size = shift_age, shift_size @opened_logdev = false super(nil, shift_age, shift_size) self.logdev = logdev end |
Instance Attribute Details
#default_transform ⇒ Object
Returns the value of attribute default_transform.
10 11 12 |
# File 'lib/buffering_logger/logger.rb', line 10 def default_transform @default_transform end |
#raw_log_device ⇒ Object (readonly)
Returns the value of attribute raw_log_device.
11 12 13 |
# File 'lib/buffering_logger/logger.rb', line 11 def raw_log_device @raw_log_device end |
Instance Method Details
#buffered(transform: default_transform) ⇒ Object
37 38 39 40 41 |
# File 'lib/buffering_logger/logger.rb', line 37 def buffered(transform: default_transform) @logdev.buffered(transform: transform) do yield end end |
#logdev=(logdev) ⇒ Object
allow changing the log destination. e.g.: in Unicorn during after_fork to set a separate log path for each worker.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/buffering_logger/logger.rb', line 22 def logdev=(logdev) @logdev.close if @logdev && @opened_logdev @raw_log_device = LogDevice.new( logdev, shift_age: @shift_age, shift_size: @shift_size, ) # if we opened the logdev then we should close it when we're done @opened_logdev = @raw_log_device.dev != logdev @logdev = BufferingLogger::Buffer.new(@raw_log_device) end |