Class: MrLogaLoga::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/mr_loga_loga/context.rb

Overview

Description

This class provides a fluent interface to attach contextual information to log messages.

Instance Method Summary collapse

Constructor Details

#initialize(logger, context = {}) ⇒ Context

Returns a new instance of Context.



10
11
12
13
# File 'lib/mr_loga_loga/context.rb', line 10

def initialize(logger, context = {})
  @logger = logger
  @context = context
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(symbol, *args, &block) ⇒ Object



57
58
59
60
61
# File 'lib/mr_loga_loga/context.rb', line 57

def method_missing(symbol, *args, &block)
  context = block ? -> { { symbol => block.call } } : { symbol => unwrap(args) }
  @context = merge_context(@context, context)
  self
end

Instance Method Details

#add(severity, message = nil, context = nil, progname = nil) { ... } ⇒ Context Also known as: log

Log a message with the current context

Parameters:

  • context (Hash) (defaults to: nil)

    the new context

Yields:

  • the new context

Returns:

  • (Context)

    a new context object



31
32
33
34
35
36
37
38
39
40
# File 'lib/mr_loga_loga/context.rb', line 31

def add(severity, message = nil, context = nil, progname = nil, &block)
  severity ||= UNKNOWN
  return true unless @logger.log?(severity)

  message, context = LoggerData.build(message, context, &block)
  context = merge_context(@context, context)
  context = context.call if context.is_a?(Proc)

  @logger.add(severity, LogMessage.new(message, context), progname, &block)
end

#context(context = {}) { ... } ⇒ Context

Add a new context to the log message

Parameters:

  • context (Hash) (defaults to: {})

    the new context

Yields:

  • the new context

Returns:

  • (Context)

    a new context object



20
21
22
23
24
# File 'lib/mr_loga_loga/context.rb', line 20

def context(context = {}, &block)
  @context = merge_context(@context, context)
  @context = merge_context(@context, block)
  self
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/mr_loga_loga/context.rb', line 63

def respond_to_missing?(name, include_private = false)
  super(name, include_private)
end