class BufferingLogger::Logger
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.
Attributes
default_transform[RW]
raw_log_device[R]
Public Class Methods
new(logdev, shift_age: 0, shift_size: 1048576)
click to toggle source
Calls superclass method
# 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
Public Instance Methods
buffered(transform: default_transform) { || ... }
click to toggle source
# File lib/buffering_logger/logger.rb, line 37 def buffered(transform: default_transform) @logdev.buffered(transform: transform) do yield end end
logdev=(logdev)
click to toggle source
allow changing the log destination. e.g.: in Unicorn during after_fork to set a separate log path for each worker.
# 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