On Tue, 13 May 2008, Erskine, Thomas (IT) wrote:
I do indeed want
$logger-log($level, $msg, $key)
to be dealt with differently depending on the appender it ends up on.
That's part of the point of having different appenders; they ought to be
independant. The problem is that it doesn't seem possible to use
appenders simultaneously which set (and require) warp_message=0 and ones
which don't.
I don't think that this is true, warp_message is a per-appender setting
and can be set individually (and differently) per appender. The
restriction is that the you need to use the NoopLayout with the appender
that has warp_message set.
I've just thought of another way to do this. If I set
warp_message=sub{return $_[0]} on the file appender, then things
should just work. I don't like putting code in the log configuration
file, but it's worth a shot. Just a sec... Yup. It works.
That's exactly right -- and since it's per-appender, it won't affect the
other 'fancy' appender. But, the ugly part is that with warp_message
turned on, the appender's log() method gets an a reference to an array
of message chunks, which the file appender can't deal with.
The problem with using the MDC is that this isn't something which is
intended to persist for a while. The whole point is to be able to set
the Netcool AlertKey on a per-message basis. Of course I _could_ use
the MDC, but my usage would look like:
Log::Log4perl::MDC-put(netcool-key, $key);
$logger-log($level, $msg);
Log::Log4perl::MDC-put(netcool-key, undef);
which isn't exactly handy.
... or you define a wrapper around that:
http://log4perl.sourceforge.net/d/Log/Log4perl.html#6acb7
-- Mike
Mike Schilli
[EMAIL PROTECTED]
-Original Message-
From: Mike Schilli [mailto:[EMAIL PROTECTED]
Sent: Tuesday, May 13, 2008 2:26 AM
To: Erskine, Thomas (IT)
Cc: [EMAIL PROTECTED]
Subject: Re: log4perl appenders with warp_message=0
On Fri, 9 May 2008, Erskine, Thomas (IT) wrote:
The other logs an event to Netcool (specifying
warp_message=0) and it
works fine. It allows you to call log like:
$logger-log($level, $msg, $key)
so that you can specify a Netcool alert key.
Then comes the problem: I made a configuration file including both
appenders. Now I lose. The Netcool appender continues to
work nicely.
However, the file appender mashes all the args together if
I specify
the key. Which is the expected behaviour for it, but then
I can't use
the key feature with netcool. I could make it work by setting
warp_message=0 on the file appender, but to do that I have
to set the
layout to NoopLayout, so I can't get nicely formatted log
entries there.
It seems as if there is no way to use both types of appender (with
warp_message=0 and without) in the same config file. Or am
I missing
something?
Hi Thomas,
It seems like you want a statement like
$logger-log($level, $msg, $key)
to have two different meanings, depending on which appender
the message ends up at.
On the Netcool appender, you want it to use the $key for a
special purpose, on the file appender, you want it to sweep
$key under the carpet -- seems inconsistent to me, as it's
not clear what another random new appender would do with this.
For cases like this, I would stuff the Netcool key in the MDC:
http://log4perl.sourceforge.net/d/Log/Log4perl/MDC.html
So instead of saying
$logger-log($level, $msg, $key);
you would say
Log::Log4perl::MDC-put(netcool-key, $key);
$logger-log($level, $msg);
and the Netcool appender would either fetch the the key from
the MDC in its log() method and do something with it or you
could access it as %X{netcool-key} in the layout:
http://log4perl.sourceforge.net/d/Log/Log4perl/Layout/PatternL
ayout.html
Would that work for you?
Can I post this message to the mailing list? Looks like this
could be useful for other folks as well.
-- Mike
Mike Schilli
[EMAIL PROTECTED]
NOTICE: If received in error, please destroy and notify sender. Sender does
not intend to waive confidentiality or privilege. Use of this email is
prohibited when received in error.
-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
log4perl-devel mailing list
log4perl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/log4perl-devel