module Logsly::InstanceMethods

Attributes

level[R]
log_type[R]
output_loggers[R]
outputs[R]

Public Class Methods

new(log_type, opts = nil) click to toggle source
# File lib/logsly.rb, line 52
def initialize(log_type, opts = nil)
  opts ||= {}

  @log_type = log_type.to_s
  @level    = (opts[:level] || opts['level'] || DEFAULT_LEVEL).to_s
  @outputs  = [*(opts[:outputs] || opts['outputs'] || [])].uniq

  @output_loggers = @outputs.inject({}) do |hash, output_name|
    unique_name = "#{self.class.name}-#{@log_type}-#{self.object_id}-#{output_name}"
    logger      = Logsly::Logging182.logger[unique_name]
    output      = Logsly.outputs(output_name)
    output_data = output.data(self)

    # prefer output-specific level; fall back to general level
    logger.level = output_data && output_data.level ? output_data.level : @level
    add_appender(logger, output.to_appender(output_data))

    hash[output_name] = logger
    hash
  end
end

Public Instance Methods

==(other_logger) click to toggle source
# File lib/logsly.rb, line 103
def ==(other_logger)
  other_logger.log_type == @log_type &&
  other_logger.level    == @level    &&
  other_logger.outputs  == @outputs
end
appenders() click to toggle source
# File lib/logsly.rb, line 99
def appenders
  @appenders ||= self.output_loggers.map{ |(_, l)| l.appenders }.flatten
end
file_path() click to toggle source
# File lib/logsly.rb, line 78
def file_path
  @file_path ||= if (appender = get_file_appender(self.appenders))
    appender.name if appender.respond_to?(:name)
  end
end
inspect() click to toggle source
# File lib/logsly.rb, line 109
def inspect
  reference = '0x0%x' % (self.object_id << 1)
  "#<#{self.class}:#{reference} "\
  "@log_type=#{@log_type.inspect} "\
  "@level=#{@level.inspect} "\
  "@outputs=#{@outputs.inspect}"
end
mdc(key, value) click to toggle source
# File lib/logsly.rb, line 74
def mdc(key, value)
  Logsly::Logging182.mdc[key] = value
end

Private Instance Methods

add_appender(output_logger, appender) click to toggle source
# File lib/logsly.rb, line 119
def add_appender(output_logger, appender)
  output_logger.add_appenders(appender) if appender
end
get_file_appender(appenders) click to toggle source
# File lib/logsly.rb, line 123
def get_file_appender(appenders)
  self.appenders.detect{ |a| a.kind_of?(Logsly::Logging182::Appenders::File) }
end