|
From: Mike S. <log...@pe...> - 2003-05-29 01:19:16
|
From: Andrew Hammond <and...@su...>
To: Mike Schilli <log...@pe...>
Subject: Re: please help oh log-guru! :)
Thankyou for the help, that makes a lot more sense to me now. I think I
need 2 loggers, one of which should have 2 appenders. The goal is to
have all the generic "logging" information going into the first logger
with the 2 appenders (the root logger), and a second logger which _only_
gets sql specific stuff (the SQL logger).
Here's what I've currently got. The root logger is working perfectly,
but the SQL logger isn't getting _any_ messages. I must be doing
something wrong...
log4perl.logger = DEBUG, LOGFILE, STDERR
log4perl.appender.LOGFILE = Log::Dispatch::File
log4perl.appender.LOGFILE.Threshold = WARN
log4perl.appender.LOGFILE.filename = error_log.txt
log4perl.appender.LOGFILE.mode = append
log4perl.appender.LOGFILE.layout = PatternLayout
log4perl.appender.LOGFILE.layout.ConversionPattern = \
%d [%r] %c %F:%L (%M) - %m%n
log4perl.appender.STDERR = Log::Dispatch::Screen
log4perl.appender.STDERR.Threshold = INFO
log4perl.appender.STDERR.layout =
Log::Log4perl::Layout::PatternLayout
log4perl.appender.STDERR.layout.ConversionPattern = %d - %m%n
log4perl.logger.SQL = DEBUG, SQL
log4perl.appender.SQL = Log::Dispatch::File
log4perl.appender.SQL.Threshold = DEBUG
log4perl.appender.SQL.filename = sqllog.sql
log4perl.appender.SQL.mode = write
log4perl.appender.SQL.layout = PatternLayout
log4perl.appender.SQL.layout.ConversionPattern = %m%n
code:
Log::Log4perl->init('webpanel_log.conf');
our $log = get_logger();
our $sqllog = get_logger('sql');
$log->info('Starting Run'); # goes to root logger, not seen by sql
logger: perfect!
$sqllog->debug($query); # should end up in sqllog.sql file, but
doesn't... :(
where $query is a really long and involved SQL query that the code
generates for me...
Mike Schilli wrote:
>On Fri, 23 May 2003, Andrew Hammond wrote:
>
>
>
>>My goal is to have $log with a pair of appenders (one that goes into an
>>error log and triggers at level WARN, the other which goes to STDERR and
>>triggers at INFO), and $sqllog that goes to a completely seperate log.
>>
>>config file is:
>>
>>log4perl.logger = INFO, LOGFILE
>>log4perl.appender.LOGFILE = Log::Dispatch::File
>>log4perl.appender.LOGFILE.filename = error_log.txt
>>log4perl.appender.LOGFILE.mode = append
>>log4perl.appender.LOGFILE.layout = PatternLayout
>>log4perl.appender.LOGFILE.layout.ConversionPattern = [%r] %c %F:%L (%M)
>>- %m%n
>>
>>log4perl.category.STDERR = WARN, STDERR
>>log4perl.appender.STDERR = Log::Dispatch::Screen
>>log4perl.appender.STDERR.layout =
>>Log::Log4perl::Layout::PatternLayout
>>log4perl.appender.STDERR.layout.ConversionPattern = %d %c %F:%L (%M) - %m%n
>>
>>log4perl.logger.sql = DEBUG, SQL
>>log4perl.appender.SQL = Log::Dispatch::File
>>log4perl.appender.SQL.filename = sqllog.sql
>>log4perl.appender.SQL.mode = write
>>log4perl.appender.SQL.layout = PatternLayout
>>log4perl.appender.SQL.layout.ConversionPattern=%m%n
>>
>>
>
>Your categories (or loggers) look kind of strange:
>
> log4perl.category.STDERR
>
>defines a logger which would respond only if you obtained a logger via
>
> our $log = get_logger('STDERR'); # ??? questionable ???
>
>but that's probably not what you want. Categories are for defining
>which parts of the system you want logging enabled and they're usually
>set to the class the code is located in (like "Foo::Bar"). Since
>you seem to want to enable logging across the system (in the "root category"
>in Log4perl speak) you should leave out the category name entirely.
>
>Also, what you seem to want is to have *one* logger and multiple appenders
>(I replaced 'category' by 'logger' because that's the newer way, but
>they're synonyms):
>
> log4perl.logger = DEBUG, LOGFILE, STDERR, SQL
>
>And, get rid of these lines
>
> # Remove those
> log4perl.category.STDERR = WARN, STDERR
> log4perl.logger.sql = DEBUG, SQL
>
>If your appenders have different thresholds (WARN, DEBUG etc.), you
>can accomplish that via setting an appender threshold:
>
> log4perl.appender.STDERR.Threshold = WARN
> log4perl.appender.sql.Threshold = DEBUG
>
>Give it a whirl ...
>
>-- Mike
>
>Mike Schilli
>log...@pe...
>http://perlmeister.com
>http://log4perl.sourceforge.net
>
>
>
>
|