class TTY::Logger::Handlers::Stream
Attributes
config[R]
level[R]
output[R]
Public Class Methods
new(output: $stderr, formatter: nil, config: nil, level: nil)
click to toggle source
# File lib/tty/logger/handlers/stream.rb, line 17 def initialize(output: $stderr, formatter: nil, config: nil, level: nil) @output = Array[output].flatten @formatter = coerce_formatter(formatter || config.formatter).new @config = config @level = level || @config.level @mutex = Mutex.new end
Public Instance Methods
call(event)
click to toggle source
@api public
# File lib/tty/logger/handlers/stream.rb, line 26 def call(event) @mutex.lock data = {} metadata.each do |meta| case meta when :date data["date"] = event.metadata[:time].strftime(config.date_format) when :time data["time"] = event.metadata[:time].strftime(config.time_format) when :file data["path"] = format_filepath(event) when :pid data["pid"] = event.metadata[:pid] else raise "Unknown metadata `#{meta}`" end end data["level"] = event.metadata[:level] data["message"] = event.message.join(' ') unless event.fields.empty? data.merge!(event.fields) end unless event.backtrace.empty? data.merge!("backtrace" => event.backtrace.join(",")) end output.each do |out| out.puts @formatter.dump(data, max_bytes: config.max_bytes, max_depth: config.max_depth) end ensure @mutex.unlock end