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



190
191
192
193
194
# File 'lib/philiprehberger/structured_logger/logger.rb', line 190

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



179
180
181
182
183
184
185
186
187
188
# File 'lib/philiprehberger/structured_logger/logger.rb', line 179

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



196
197
198
199
200
# File 'lib/philiprehberger/structured_logger/logger.rb', line 196

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



170
171
172
173
174
175
176
177
# File 'lib/philiprehberger/structured_logger/logger.rb', line 170

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