lib/logsly.rb in logsly-1.0.2 vs lib/logsly.rb in logsly-1.1.0
- old
+ new
@@ -1,19 +1,57 @@
require 'ns-options'
require 'logging'
require 'logsly/version'
-require 'logsly/settings'
+require 'logsly/colors'
+require 'logsly/base_output'
module Logsly
def self.included(receiver)
receiver.class_eval do
attr_reader :log_type, :level, :outputs, :logger
include LoggerMethods
end
end
+ module Settings
+ include NsOptions::Proxy
+
+ option :colors, ::Hash, :default => ::Hash.new(NullColors.new)
+ option :outputs, ::Hash, :default => ::Hash.new(NullOutput.new)
+ end
+
+ def self.reset
+ Settings.reset
+ Logging.reset
+ end
+
+ def self.colors(name, &block)
+ require 'logsly/colors'
+ Settings.colors[name.to_s] = Colors.new(name, &block) if !block.nil?
+ Settings.colors[name.to_s]
+ end
+
+ def self.stdout(name, &block)
+ require 'logsly/stdout_output'
+ Settings.outputs[name.to_s] = StdoutOutput.new(&block)
+ end
+
+ def self.file(name, &block)
+ require 'logsly/file_output'
+ Settings.outputs[name.to_s] = FileOutput.new(&block)
+ end
+
+ def self.syslog(name, &block)
+ require 'logsly/syslog_output'
+ Settings.outputs[name.to_s] = SyslogOutput.new(&block)
+ end
+
+ def self.outputs(name)
+ Settings.outputs[name.to_s]
+ end
+
module LoggerMethods
def initialize(log_type, opts_hash=nil)
opts = NsOptions::Struct.new(opts_hash) do
option :level, String, :default => 'info'
@@ -28,10 +66,20 @@
@outputs.each do |output|
add_appender(Logsly.outputs(output).to_appender(self))
end
end
+ def mdc(key, value)
+ Logging.mdc[key] = value
+ end
+
+ def file_path
+ @file_path ||= if (appender = get_file_appender)
+ appender.name if appender.respond_to?(:name)
+ end
+ end
+
# delegate all calls to the @logger
def method_missing(method, *args, &block)
@logger.send(method, *args, &block)
end
@@ -61,9 +109,13 @@
def appender_added?(appender)
@logger.appenders.detect do |existing|
existing.kind_of?(appender.class) && existing.name == appender.name
end
+ end
+
+ def get_file_appender
+ @logger.appenders.detect{ |a| a.kind_of?(Logging::Appenders::File) }
end
end
end