Tim Pease
7/17/2008 2:36:00 PM
On Jul 17, 2008, at 3:26 AM, Jens Wille wrote:
> hi!
>
> Shin guey Wong [2008-07-17 08:58]:
>> require 'logging'
>>
>> logger = Logging::Logger['example_logger']
>> logger.add_appenders(
>> Logging::Appender.stdout,
>> Logging::Appenders::File.new('example.log')
>> )
>> logger.level = :info
>>
>> logger.debug "this debug message will not be output by the logger"
>> logger.info "just some friendly advice"
>>
>> Base on the sample above, how do I configure different log level
>> for 2
>> output. Eg I want the stdout to be :info level bug the logfile to be
>> :debug level. Is this possible?
> you can set the log level on the appender individually:
>
> logger = Logging::Logger['example_logger']
> logger.add_appenders(
> Logging::Appenders::Stdout.new(nil, :level => :info),
> Logging::Appenders::File.new('example.log')
> )
> logger.level = :debug
>
> but note that you can only set *higher* thresholds on the appenders,
> events below the log level of the superordinate logger instance
> won't be passed through to the appenders, AFAIK. tim, please correct
> me if i'm wrong ;-)
That is correct. If your logger level is set to 'error' then only
error and fatal log events will be propagated to the appenders.
But you can configure appenders individually to drop log events below
a certain threshold. For the example above ...
Logging::Appender['stdout'].level = :info
Logging::Appender['exmaple.log'].level = :debug
And you would need to set the logger level to :debug to see any
difference between the output of the two appenders.
logger.level = :debug
Just FYI -- you can access an Appender or Logger by name if they have
already been created:
Logging::Logger['example_logger'] #=> always returns the same
logger instance
Logging::Appender['stdout'] #=> always returns the stdout
appender if it has been created
Blessings,
TwP