Class: SemanticLogger::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/semantic_logger/base.rb

Direct Known Subclasses

Formatters::Raw, Logger, Subscriber

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#filterObject

Class name to be logged



12
13
14
# File 'lib/semantic_logger/base.rb', line 12

def filter
  @filter
end

#nameObject

Class name to be logged



12
13
14
# File 'lib/semantic_logger/base.rb', line 12

def name
  @name
end

Instance Method Details

#fast_tag(tag, &block) ⇒ Object

:nodoc:



150
151
152
# File 'lib/semantic_logger/base.rb', line 150

def fast_tag(tag, &block)
  SemanticLogger.fast_tag(tag, &block)
end

#levelObject

Returns the current log level if set, otherwise it returns the global default log level



29
30
31
# File 'lib/semantic_logger/base.rb', line 29

def level
  @level || SemanticLogger.default_level
end

#level=(level) ⇒ Object

Set the logging level for this logger

Note: This level is only for this particular instance. It does not override

the log level in any logging instance or the default log level
SemanticLogger.default_level

Must be one of the values in SemanticLogger::LEVELS, or nil if this logger instance should use the global default level



22
23
24
25
# File 'lib/semantic_logger/base.rb', line 22

def level=(level)
  @level_index = SemanticLogger.level_to_index(level)
  @level       = SemanticLogger.send(:index_to_level, @level_index)
end

#measure(level, message, params = {}, &block) ⇒ Object Also known as: benchmark

Dynamically supply the log level with every measurement call



110
111
112
113
114
115
116
117
# File 'lib/semantic_logger/base.rb', line 110

def measure(level, message, params = {}, &block)
  index = SemanticLogger.level_to_index(level)
  if level_index <= index
    measure_internal(level, index, message, params, &block)
  else
    block.call(params) if block
  end
end

#payloadObject

Returns [Hash] payload to be added to every log entry in the current scope on this thread. Returns nil if no payload is currently set



179
180
181
# File 'lib/semantic_logger/base.rb', line 179

def payload
  Thread.current[:semantic_logger_payload]
end

#pop_tags(quantity = 1) ⇒ Object

:nodoc:



140
141
142
# File 'lib/semantic_logger/base.rb', line 140

def pop_tags(quantity = 1)
  SemanticLogger.pop_tags(quantity)
end

#push_tags(*tags) ⇒ Object

:nodoc:



135
136
137
# File 'lib/semantic_logger/base.rb', line 135

def push_tags(*tags)
  SemanticLogger.push_tags(*tags)
end

#silence(new_level = :error, &block) ⇒ Object

:nodoc:



145
146
147
# File 'lib/semantic_logger/base.rb', line 145

def silence(new_level = :error, &block)
  SemanticLogger.silence(new_level, &block)
end

#tagged(*tags, &block) ⇒ Object Also known as: with_tags

:nodoc:



122
123
124
# File 'lib/semantic_logger/base.rb', line 122

def tagged(*tags, &block)
  SemanticLogger.tagged(*tags, &block)
end

#tagsObject

:nodoc:



130
131
132
# File 'lib/semantic_logger/base.rb', line 130

def tags
  SemanticLogger.tags
end

#with_payload(payload) ⇒ Object

Thread specific context information to be logged with every log entry

Add a payload to all log calls on This Thread within the supplied block

logger.with_payload(tracking_number: 12345) do
  logger.debug('Hello World')
end

If a log call already includes a pyload, this payload will be merged with the supplied payload, with the supplied payload taking precedence

logger.with_payload(tracking_number: 12345) do
  logger.debug('Hello World', result: 'blah')
end


168
169
170
171
172
173
174
# File 'lib/semantic_logger/base.rb', line 168

def with_payload(payload)
  current_payload                          = self.payload
  Thread.current[:semantic_logger_payload] = current_payload ? current_payload.merge(payload) : payload
  yield
ensure
  Thread.current[:semantic_logger_payload] = current_payload
end