-
Notifications
You must be signed in to change notification settings - Fork 21
101 setting the log level
Like many other logging libraries, Yell allows you to define from which level onwards you want to write your log message.
logger = Yell.new STDOUT, :level => :info
logger.debug "This is a :debug message"
#=> nil
logger.info "This is a :info message"
#=> "2012-02-29T09:30:00+01:00 [ INFO] 65784 : This is a :info message"
As expected, the logger
instance will write for any level equal or higher to the level of :info
.
The Yell::Level
parser allows you to exactly specify on which levels to log, ignoring all the others. For instance: If we want to only log at the :debug
and :warn
levels we simply providing an array:
logger = Yell.new STDOUT, :level => [:debug, :warn]
[:debug, :info, :warn, :error, :fatal].each do |level|
logger.send( level, level )
end
#=> "2012-02-29T09:30:00+01:00 [DEBUG] 65784 : debug"
#=> "2012-02-29T09:30:00+01:00 [ WARN] 65784 : warn"
Additionally to writing only on specific levels, you may pass a range to the :level
option:
logger = Yell.new STDOUT, :level => (:debug..:warn)
[:debug, :info, :warn, :error, :fatal].each do |level|
logger.send( level, level )
end
#=> "2012-02-29T09:30:00+01:00 [DEBUG] 65784 : debug"
#=> "2012-02-29T09:30:00+01:00 [ INFO] 65784 : info"
#=> "2012-02-29T09:30:00+01:00 [ WARN] 65784 : warn"
NOTE: Using a range like (:info..:warn)
may only be possible with ruby 1.9.x. If that is the case, you are still able to use a numeric range, e.g. (1..3)
.
In order to set your level, you can also pass a Yell::Level instance like so:
# DEFAULT
logger = Yell.new :level => Yell.level(:error) # grater than or equal to :error
# GREATER THAN
logger = Yell.new :level => Yell.level.gte(:error ) # greater than or equal to :error
logger = Yell.new :level => Yell.level.gt(:error ) # greater than :error
# LOWER THAN
logger = Yell.new :level => Yell.level.lte(:error ) # lower than or equal to :error
logger = Yell.new :level => Yell.level.lt(:error ) # lower than :error
# ONLY AT
logger = Yell.new :level => Yell.level.at(:error) # only at :error
logger = Yell.new :level => Yell.level.at(:info. :warn) # only at :info and :warn
Of couse, you can combine those:
# BETWEEN
logger = Yell.new :level => Yell.level.gte(:info).lt(:fatal) # :info, :warn, :error
# GREATER THAT AND AT COMBINED
logger = Yell.new :level => Tell.level.gte(:error).at(:debug) # :debug, :error, :fatal
In order to set your level, you can also pass a Yell::Level instance like so:
# DEFAULT
logger = Yell.new :level => 'error' # grater than or equal to :error
# GREATER THAN
logger = Yell.new :level => 'gte.error' # greater than or equal to :error
logger = Yell.new :level => 'gt.error' # greater than :error
# LOWER THAN
logger = Yell.new :level => 'lte.error' # lower than or equal to :error
logger = Yell.new :level => 'lt.error' # lower than :error
# ONLY AT
logger = Yell.new :level => 'at.error' # only at :error
logger = Yell.new :level => 'at.info at.warn' # only at :info and :warn
Of couse, you can combine those, too:
# BETWEEN
logger = Yell.new :level => 'gte.info lt.fatal' # :info, :warn, :error
# GREATER THAT AND AT COMBINED
logger = Yell.new :level => 'gte.error at.debug' # :debug, :error, :fatal