class Logsly::Logging182::Config::Configurator
The Configurator
class is used to configure the Logsly::Logging182
framework using information found in a block of Ruby code. This block is evaluated in the context of the configurator's DSL
.
Public Class Methods
# File lib/logsly/logging182/config/configurator.rb, line 15 def self.process( &block ) new.load(&block) end
Public Instance Methods
Creates a new Appender
based on the given config options (a hash). The type of Appender
created is determined by the 'type' option in the config. The remaining config options are passed to the Appender
initializer.
The config options can also contain a 'layout' option. This should be another set of options used to create a Layout
for this Appender
.
# File lib/logsly/logging182/config/configurator.rb, line 100 def appender( name, config ) type = config.delete(:type) raise Error, "appender type not given for #{name.inspect}" if type.nil? config[:layout] = layout(config[:layout]) if config.has_key? :layout clazz = ::Logsly::Logging182::Appenders.const_get type clazz.new(name, config) rescue NameError raise Error, "unknown appender class Logsly::Logging182::Appenders::#{type}" end
Given an array of Appender
configurations, this method will iterate over each and create the Appender(s).
# File lib/logsly/logging182/config/configurator.rb, line 68 def appenders( ary ) ary.each {|name, config| appender(name, config)} end
Creates a new Layout
based on the given config options (a hash). The type of Layout
created is determined by the 'type' option in the config. The remaining config options are passed to the Layout
initializer.
# File lib/logsly/logging182/config/configurator.rb, line 120 def layout( config ) return ::Logsly::Logging182::Layouts::Basic.new if config.nil? type = config.delete(:type) raise Error, 'layout type not given' if type.nil? clazz = ::Logsly::Logging182::Layouts.const_get type clazz.new config rescue NameError raise Error, "unknown layout class Logsly::Logging182::Layouts::#{type}" end
Loads the configuration from the block and configures the Logsly::Logging182
gem.
# File lib/logsly/logging182/config/configurator.rb, line 25 def load( &block ) raise Error, "missing configuration block" unless block dsl = TopLevelDSL.new dsl.instance_eval(&block) pre_config dsl.__pre_config ::Logsly::Logging182::Logger[:root] # ensures the log levels are defined appenders dsl.__appenders loggers dsl.__loggers end
Given an array of Logger
configurations, this method will iterate over each and create the Logger(s).
# File lib/logsly/logging182/config/configurator.rb, line 78 def loggers( ary ) ary.each do |name, config| l = Logsly::Logging182::Logger[name] l.level = config[:level] if config[:level] l.additive = config[:additive] if l.respond_to? :additive= l.trace = config[:trace] l.appenders = Array(config[:appenders]). map {|nm| ::Logsly::Logging182::Appenders[nm]} end end
Configures the logging levels, object format style, and root logging level.
# File lib/logsly/logging182/config/configurator.rb, line 43 def pre_config( config ) if config.nil? ::Logsly::Logging182.init unless ::Logsly::Logging182.initialized? return end # define levels levels = config[:levels] ::Logsly::Logging182.init(levels) unless levels.nil? # format as format = config[:format_as] ::Logsly::Logging182.format_as(format) unless format.nil? # backtrace value = config[:backtrace] ::Logsly::Logging182.backtrace(value) unless value.nil? end