Class: Steno::TaggedLogger

Inherits:
Object show all
Defined in:
lib/steno/tagged_logger.rb

Overview

Provides a proxy that allows persistent user data

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(proxied_logger, user_data = {}) ⇒ TaggedLogger

Returns a new instance of TaggedLogger.



33
34
35
36
# File 'lib/steno/tagged_logger.rb', line 33

def initialize(proxied_logger, user_data = {})
  @proxied_logger = proxied_logger
  @user_data = user_data
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &blk) ⇒ Object



38
39
40
# File 'lib/steno/tagged_logger.rb', line 38

def method_missing(method, *args, &blk)
  @proxied_logger.send(method, *args, &blk)
end

Instance Attribute Details

#proxied_loggerObject (readonly)

Returns the value of attribute proxied_logger.



9
10
11
# File 'lib/steno/tagged_logger.rb', line 9

def proxied_logger
  @proxied_logger
end

#user_dataObject

Returns the value of attribute user_data.



10
11
12
# File 'lib/steno/tagged_logger.rb', line 10

def user_data
  @user_data
end

Class Method Details

.define_log_method(name) ⇒ Object

The following helpers are used to create a new scope for binding the log level.



16
17
18
# File 'lib/steno/tagged_logger.rb', line 16

def define_log_method(name)
  define_method(name) { |*args, &blk| log(name, *args, &blk) }
end

.define_logf_method(name) ⇒ Object



20
21
22
# File 'lib/steno/tagged_logger.rb', line 20

def define_logf_method(name)
  define_method(name.to_s + "f") { |fmt, *args| log(name, fmt % args) }
end

Instance Method Details

#log(level_name, message = nil, user_data = nil, &blk) ⇒ Object

See Also:



43
44
45
46
47
# File 'lib/steno/tagged_logger.rb', line 43

def log(level_name, message = nil, user_data = nil, &blk)
  ud = @user_data.merge(user_data || {})

  @proxied_logger.log(level_name, message, ud, &blk)
end

#log_exception(ex, user_data = {}) ⇒ Object



50
51
52
53
54
# File 'lib/steno/tagged_logger.rb', line 50

def log_exception(ex, user_data = {})
  ud = @user_data.merge(user_data || {})

  @proxied_logger.log_exception(ex, ud)
end

#tag(new_user_data = {}) ⇒ Object



56
57
58
# File 'lib/steno/tagged_logger.rb', line 56

def tag(new_user_data = {})
  Steno::TaggedLogger.new(proxied_logger, user_data.merge(new_user_data))
end