Class: BufferingLogger::Buffer

Inherits:
Object
  • Object
show all
Defined in:
lib/buffering_logger/buffer.rb

Overview

Buffer is used to wrap the logger’s logdev to accomplish buffering. For the purposes of the Logger class a LogDevice only needs to implement #write and #close. We add #buffered as well.

Instance Method Summary collapse

Constructor Details

#initialize(logdev) ⇒ Buffer

Returns a new instance of Buffer.



6
7
8
9
# File 'lib/buffering_logger/buffer.rb', line 6

def initialize(logdev)
  @logdev = logdev
  @mutex = Mutex.new
end

Instance Method Details

#buffered(transform: nil) ⇒ Object

buffers during the block and then flushes. returns the value of the block.



13
14
15
16
17
18
19
# File 'lib/buffering_logger/buffer.rb', line 13

def buffered(transform: nil)
  self.buffering = true
  yield
ensure
  self.buffering = false
  flush(transform: transform)
end

#closeObject



29
30
31
# File 'lib/buffering_logger/buffer.rb', line 29

def close
  logdev_close
end

#write(msg) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/buffering_logger/buffer.rb', line 21

def write(msg)
  if buffering
    buffer.write(msg)
  else
    logdev_write(msg)
  end
end