Class: BufferingLogger::Logger

Inherits:
Logger
  • Object
show all
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

Instance Method Summary collapse

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_transformObject

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_deviceObject (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