|
From: Kevin G. <ke...@go...> - 2002-09-10 16:01:21
|
Hugh Salgado's post about Filters brought to mind a situation where
changing the level from, say, INFO to DEBUG would result in *less*
logging, if there's a (as yet unimplemented) LevelFilter on the appender
that, say, only accepts INFO messages.
Erik W. Selberg wrote:
> So I understand that inc_level / more_logging may not increase the
> amount of messages for lots of reasons. appender threshholds being a
> fine one. appenders that send those levels to random places being
> another. Lack of logging messages at that level being a third. :) But I
> don't think that matters so much.
>
> How about we split the difference and just have inc_level / dec_level
> AND more_logging / less_logging? Not like we can't make functions
> aliases for the other. This way, folks who like to think of incrementing
> and decrementing levels can, and folks who just want more or less
> logging can just call the obvious function.
>
> -e
>
> Kevin Goess wrote:
>
>> > I'm confused... can you give me an example whereby changing the logging
>> > from WARN to INFO would result in FEWER messages?
>>
>> You're absolutely right, there's not, I was confused, thinking of
>> appender thresholds. However, there is the easy case where changing a
>> logger level from WARN to INFO would not result in any change in
>> logging behavior:
>> log4perl.appender.app1.Threshold = WARN
>> in which case neither INFO nor DEBUG messages ever appear in that
>> appender's logs. See attached for a non-contrived example.
>>
>> I'm perfectly happy to be outvoted, shall we have a chorus of AYE's or
>> NAY's for
>>
>> inc_level/dec_level more_logging/less_logging pumpup/silence other?
>>
>>
>> Erik W. Selberg wrote:
>>
>>> Kevin Goess wrote:
>>>
>>>> Jeez, don't you guys sleep?
>>>
>>>
>>>
>>>
>>> um..... no. :p
>>>
>>>> After thinking about this for a day, I have to say I'm convinced
>>>> inc_level and dec_level best describe what's going on.
>>>> more/less_logging or pumpup/silence both presuppose that changing a
>>>> logger's level towards DEBUG results in *more* messages. That's not
>>>> necessarily the case, with appender thresholds it might just result
>>>> in *different* message behavior, maybe even less messages? What the
>>>> functions are doing is changing the level, what logging behavior
>>>> that change results in is up to the config file.
>>>
>>>
>>>
>>>
>>> I'm confused... can you give me an example whereby changing the
>>> logging from WARN to INFO would result in FEWER messages? To the
>>> below, there is an intrinsic ordering, and my take away is that a
>>> higher level in the ordering will spew out (a) all the log messages
>>> of the previous levels, and (b) all the log messages of the current
>>> level.
>>>
>>> Granted, you COULD do something like:
>>>
>>> if ($logger->is_warn()) { $logger->warn("This only shows up when
>>> we're at WARN level"); }
>>>
>>> but nobody's gonna do that, really.
>>>
>>> -e
>>>
>>>>
>>>> What inc_level and dec_level do is change the level of the logger.
>>>> Since the log4j docs say quite prominently:
>>>>
>>>> "Basic Selection Rule: A log request of level p in a logger with
>>>> (either assigned or inherited, whichever is appropriate) level q, is
>>>> enabled if p >= q.
>>>> This rule is at the heart of log4j. It assumes that levels are
>>>> ordered. For the standard levels, we have DEBUG < INFO < WARN <
>>>> ERROR < FATAL. "
>>>>
>>>> I understand your motivation in saying "the less I like exposing the
>>>> user to the concept that there's some integer value that corresponds
>>>> to a Level" but that's not the same as saying we shouldn't expose
>>>> the user to the concept that levels are ordered and are
>>>> comparisonable, which is a basic fact of life in log4j.
>>>>
>>>> If we really wanted to do it cleanly, we'd have a Priority.pm object
>>>> with is_greater and is_less_than methods, like log4j does and we'd
>>>> throw those around instead of the integers, but that would be stupid
>>>> performance-wise and I think we don't want to go there yet, right?
>>>>
>>>> BTW, there's also a getSyslogEquivalent() in Priority.java, so
>>>> that's fair game to implement.
>>>>
>>>> And re you guys' confusion between these proposed functions going in
>>>> Level.pm vs. Logger.pm, note that my implementation has
>>>> Logger::inc_level() calling Level::get_higher_level() to get the
>>>> right value.
>>>>
>>>>
>>>> Erik W. Selberg wrote:
>>>>
>>>>> Why would these be part of the Level class? I'd imagine they'd be
>>>>> part of the Logger class and affect the Logger's current Level.
>>>>>
>>>>> -e
>>>>>
>>>>>
>>>>> msc...@ao... wrote:
>>>>>
>>>>>> In a message dated Tue, 3 Sep 2002 9:50:57 PM Eastern Standard
>>>>>> Time, er...@se... writes:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> So the more I think about it, the less I like exposing the user
>>>>>>> to the concept that there's some integer value that corresponds
>>>>>>> to a Level
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Good point. Only problem is that more_logging/less_logging methods
>>>>>> are kinda strange in a "Level" class. How about pumpup() and
>>>>>> silence() :) ?
>>>>>>
>>>>>> -- Mike
>>>>>>
>>>>>> Mike Schilli
>>>>>> log...@pe...
>>>>>> http://perlmeister.com
>>>>>>
>>>>>>
>>>>>> -------------------------------------------------------
>>>>>> This sf.net email is sponsored by: OSDN - Tired of that same old
>>>>>> cell phone? Get a new here for FREE!
>>>>>> https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
>>>>>> _______________________________________________
>>>>>> log4perl-devel mailing list
>>>>>> log...@li...
>>>>>> https://lists.sourceforge.net/lists/listinfo/log4perl-devel
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -------------------------------------------------------
>>>>> This sf.net email is sponsored by: OSDN - Tired of that same old
>>>>> cell phone? Get a new here for FREE!
>>>>> https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
>>>>> _______________________________________________
>>>>> log4perl-devel mailing list
>>>>> log...@li...
>>>>> https://lists.sourceforge.net/lists/listinfo/log4perl-devel
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> #!/usr/bin/perl
>>
>> use Log::Log4perl;
>>
>> my $config = <<EOT;
>>
>> log4perl.category.app = FATAL, pageTheVP
>> log4perl.category.app.module1 = INFO, applicationLogs
>>
>> log4perl.appender.pageTheVP = Log::Dispatch::Screen
>> log4perl.appender.pageTheVP.layout =
>> Log::Log4perl::Layout::SimpleLayout
>> log4perl.appender.pageTheVP.Threshold = FATAL
>>
>> log4perl.appender.applicationLogs = Log::Log4perl::TestBuffer
>> log4perl.appender.applicationLogs.layout =
>> Log::Log4perl::Layout::SimpleLayout
>>
>> EOT
>>
>> Log::Log4perl::init(\$config);
>>
>> my $logger = Log::Log4perl::get_logger('app.module1');
>>
>>
>> $logger->info('info message 1');
>> $logger->info('info message 2');
>> $logger->info('info message 3');
>> $logger->inc_level();
>> $logger->debug('debug message');
>> $logger->fatal('big problem!!!');
>>
>>
>>
>>
>>
>
>
>
--
Happy Trails . . .
Kevin M. Goess
(and Anne and Frank)
904 Carmel Ave.
Albany, CA 94706
(510) 525-5217
|