Class: SemanticLogger::Appender::Wrapper

Inherits:
Base
  • Object
show all
Defined in:
lib/semantic_logger/appender/wrapper.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#formatter

Attributes inherited from Base

#level, #name

Instance Method Summary collapse

Methods inherited from Base

colorized_formatter, #default_formatter

Methods inherited from Base

default_level, default_level=, #payload, #pop_tags, #push_tags, #tagged, #tags, #with_payload

Constructor Details

#initialize(logger, &block) ⇒ Wrapper

Create a Logger or Rails Logger appender instance

Ruby Logger

require 'logger'
require 'semantic_logger'
ruby_logger = Logger.new(STDOUT)
SemanticLogger.add_appender(ruby_logger)
logger =  SemanticLogger['test']
logger.info('Hello World', :some => :payload)

Enhance the Rails Logger

# Add the Rails logger to the list of appenders
SemanticLogger.add_appender(Rails.logger)
Rails.logger = SemanticLogger['Rails']

# Make ActiveRecord logging include its class name in every log entry
ActiveRecord::Base.logger = SemanticLogger['ActiveRecord']

Note: Since the log level is controlled by setting the Ruby or Rails logger directly

the level is ignored for this appender


30
31
32
33
34
35
36
37
# File 'lib/semantic_logger/appender/wrapper.rb', line 30

def initialize(logger, &block)
  raise "logger cannot be null when initiailizing the SemanticLogging::Appender::Wrapper" unless logger
  @logger = logger

  # Set the formatter to the supplied block
  @formatter = block || self.default_formatter
  super(:trace, &block)
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



8
9
10
# File 'lib/semantic_logger/appender/wrapper.rb', line 8

def logger
  @logger
end

Instance Method Details

#flushObject

Flush all pending logs to disk.

Waits for all sent documents to be writted to disk


48
49
50
# File 'lib/semantic_logger/appender/wrapper.rb', line 48

def flush
  @logger.flush if @logger.respond_to?(:flush)
end

#log(log) ⇒ Object

Pass log calls to the underlying Rails, log4j or Ruby logger

trace entries are mapped to debug since :trace is not supported by the
Ruby or Rails Loggers


42
43
44
# File 'lib/semantic_logger/appender/wrapper.rb', line 42

def log(log)
  @logger.send(log.level == :trace ? :debug : log.level, @formatter.call(log))
end