Module: Philiprehberger::StructuredLogger::OutputBuilder

Defined in:
lib/philiprehberger/structured_logger/logger.rb

Overview

Builds output configuration from constructor options.

Class Method Summary collapse

Class Method Details

.build_hash_output(out, async, buffer_size) ⇒ Object



242
243
244
245
246
# File 'lib/philiprehberger/structured_logger/logger.rb', line 242

def build_hash_output(out, async, buffer_size)
  io = async ? AsyncWriter.new(out[:io], buffer_size: buffer_size) : out[:io]
  fmt = StructuredLogger.resolve_formatter(out[:formatter])
  { io: io, level: out[:level], formatter: fmt }
end

.build_multi(outputs, default_formatter, async, buffer_size) ⇒ Object



231
232
233
234
235
236
237
238
239
240
# File 'lib/philiprehberger/structured_logger/logger.rb', line 231

def build_multi(outputs, default_formatter, async, buffer_size)
  outputs.map do |out|
    if out.is_a?(Hash)
      build_hash_output(out, async, buffer_size)
    else
      io = async ? AsyncWriter.new(out, buffer_size: buffer_size) : out
      { io: io, level: nil, formatter: StructuredLogger.resolve_formatter(default_formatter) }
    end
  end
end

.build_single(output, formatter, async, buffer_size) ⇒ Object



248
249
250
251
252
# File 'lib/philiprehberger/structured_logger/logger.rb', line 248

def build_single(output, formatter, async, buffer_size)
  io = output || $stdout
  io = AsyncWriter.new(io, buffer_size: buffer_size) if async
  [{ io: io, level: nil, formatter: StructuredLogger.resolve_formatter(formatter) }]
end

.call(opts, async, buffer_size) ⇒ Object



222
223
224
225
226
227
228
229
# File 'lib/philiprehberger/structured_logger/logger.rb', line 222

def call(opts, async, buffer_size)
  outputs = opts[:outputs]
  if outputs
    build_multi(outputs, opts[:formatter], async, buffer_size)
  else
    build_single(opts[:output], opts[:formatter], async, buffer_size)
  end
end