class Hanami::Web::RackLogger::UniversalLogger

@since 2.1.0 @api private

Attributes

logger[R]

@since 2.1.0 @api private

Public Class Methods

[](logger)

@since 2.1.0 @api private

Alias for: call
call(logger) click to toggle source

@since 2.1.0 @api private

# File lib/hanami/web/rack_logger.rb, line 65
def call(logger)
  return logger if compatible_logger?(logger)

  new(logger)
end
Also aliased as: []
new(logger) click to toggle source

@since 2.1.0 @api private

# File lib/hanami/web/rack_logger.rb, line 92
def initialize(logger)
  @logger = logger
end

Private Class Methods

accepts_entry_payload?(logger) click to toggle source
# File lib/hanami/web/rack_logger.rb, line 81
def accepts_entry_payload?(logger)
  logger.method(:info).parameters.any? { |(type, _)| type == :keyrest }
end
compatible_logger?(logger) click to toggle source
# File lib/hanami/web/rack_logger.rb, line 77
def compatible_logger?(logger)
  logger.respond_to?(:tagged) && accepts_entry_payload?(logger)
end

Public Instance Methods

error(message = nil, **payload) click to toggle source

@see info

@since 2.1.0 @api private

# File lib/hanami/web/rack_logger.rb, line 118
def error(message = nil, **payload)
  payload[:message] = message if message
  logger.info(JSON.fast_generate(payload))
end
info(message = nil, **payload) click to toggle source

Logs the entry as JSON.

This ensures a reasonable (and parseable) representation of our log payload structures for loggers that are configured to wholly replace Hanami’s default logger.

@since 2.1.0 @api private

# File lib/hanami/web/rack_logger.rb, line 109
def info(message = nil, **payload)
  payload[:message] = message if message
  logger.info(JSON.fast_generate(payload))
end
tagged(*, &blk) click to toggle source

@since 2.1.0 @api private

# File lib/hanami/web/rack_logger.rb, line 98
def tagged(*, &blk)
  blk.call
end