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.



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

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



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

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.



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

def proxied_logger
  @proxied_logger
end

#user_dataObject

Returns the value of attribute user_data.



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

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.



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

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

.define_logf_method(name) ⇒ Object



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

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:



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

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



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

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

  @proxied_logger.log_exception(ex, ud)
end

#tag(new_user_data = {}) ⇒ Object



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

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