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



289
290
291
292
293
# File 'lib/philiprehberger/structured_logger/logger.rb', line 289

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



278
279
280
281
282
283
284
285
286
287
# File 'lib/philiprehberger/structured_logger/logger.rb', line 278

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



295
296
297
298
299
# File 'lib/philiprehberger/structured_logger/logger.rb', line 295

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



269
270
271
272
273
274
275
276
# File 'lib/philiprehberger/structured_logger/logger.rb', line 269

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