Class: Logging::Config::YamlConfigurator
- Defined in:
- lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb
Overview
The YamlConfigurator class is used to configure the Logging framework using information found in a YAML file.
Defined Under Namespace
Classes: Error
Class Method Summary collapse
-
.load(file, key = 'logging_config') ⇒ Object
call-seq: YamlConfigurator.load( file, key = ‘logging_config’ ).
Instance Method Summary collapse
-
#appender(config) ⇒ Object
call-seq: appender( config ).
-
#appenders(ary) ⇒ Object
call-seq: appenders( ary ).
-
#initialize(io, key) ⇒ YamlConfigurator
constructor
call-seq: YamlConfigurator.new( io, key ).
-
#layout(config) ⇒ Object
call-seq: layout( config ).
-
#load ⇒ Object
call-seq: load.
-
#loggers(ary) ⇒ Object
call-seq: loggers( ary ).
-
#pre_config(config) ⇒ Object
call-seq: pre_config( config ).
Constructor Details
#initialize(io, key) ⇒ YamlConfigurator
call-seq:
YamlConfigurator.new( io, key )
Creates a new YAML configurator that will load the Logging configuration from the given io stream. The configuration will be loaded from the given key in the YAML stream.
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 55 def initialize( io, key ) YAML.load_documents(io) do |doc| @config = doc[key] break if @config.instance_of?(Hash) end unless @config.instance_of?(Hash) raise Error, "Key '#{key}' not defined in YAML configuration" end end |
Class Method Details
.load(file, key = 'logging_config') ⇒ Object
call-seq:
YamlConfigurator.load( file, key = 'logging_config' )
Load the given YAML file and use it to configure the Logging framework. The file can be either a filename, and open File, or an IO object. If it is the latter two, the File / IO object will not be closed by this method.
The configuration will be loaded from the given key in the YAML stream.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 27 def load( file, key = 'logging_config' ) io, close = nil, false case file when String io = File.open(file, 'r') close = true when IO io = file else raise Error, 'expecting a filename or a File' end begin new(io, key).load ensure io.close if close end nil end |
Instance Method Details
#appender(config) ⇒ Object
call-seq:
appender( config )
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.
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 156 def appender( config ) return if config.nil? config = config.dup type = config.delete('type') raise Error, 'Appender type not given' if type.nil? name = config.delete('name') raise Error, 'Appender name not given' if name.nil? config['layout'] = layout(config.delete('layout')) clazz = ::Logging::Appenders.const_get type clazz.new(name, config) end |
#appenders(ary) ⇒ Object
call-seq:
appenders( ary )
Given an array of Appender configurations, this method will iterate over each and create the Appender(s).
115 116 117 118 119 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 115 def appenders( ary ) return if ary.nil? ary.each {|h| appender(h)} end |
#layout(config) ⇒ Object
call-seq:
layout( config )
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.
180 181 182 183 184 185 186 187 188 189 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 180 def layout( config ) return if config.nil? config = config.dup type = config.delete('type') raise Error, 'Layout type not given' if type.nil? clazz = ::Logging::Layouts.const_get type clazz.new config end |
#load ⇒ Object
call-seq:
load
Loads the Logging configuration from the data loaded from the YAML file.
72 73 74 75 76 77 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 72 def load pre_config @config['pre_config'] ::Logging::Logger[:root] # ensures the log levels are defined appenders @config['appenders'] loggers @config['loggers'] end |
#loggers(ary) ⇒ Object
call-seq:
loggers( ary )
Given an array of Logger configurations, this method will iterate over each and create the Logger(s).
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 127 def loggers( ary ) return if ary.nil? ary.each do |config| name = config['name'] raise Error, 'Logger name not given' if name.nil? l = Logging::Logger.new name l.level = config['level'] if config.has_key?('level') l.additive = config['additive'] if l.respond_to? :additive= l.trace = config['trace'] if l.respond_to? :trace= if config.has_key?('appenders') l.appenders = config['appenders'].map {|n| ::Logging::Appender[n]} end end end |
#pre_config(config) ⇒ Object
call-seq:
pre_config( config )
Configures the logging levels, object format style, and root logging level.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/gems/logging-0.9.4/lib/logging/config/yaml_configurator.rb', line 85 def pre_config( config ) # if no pre_config section was given, just create an empty hash # we do this to ensure that some logging levels are always defined config ||= Hash.new # define levels levels = config['define_levels'] ::Logging.init(levels) unless levels.nil? # format as format = config['format_as'] ::Logging.format_as(format) unless format.nil? # backtrace value = config['backtrace'] ::Logging.backtrace(value) unless value.nil? # grab the root logger and set the logging level root = ::Logging::Logger.root if config.has_key?('root') root.level = config['root']['level'] end end |