On Tue, Jul 03, 2007 at 10:43:30PM -0700, Mike Schilli wrote:
> The warp_message option is only for appenders which can handle an array
> ref instead of a message string. The DBI appender is the only example in
> the L4p distribution. Or, you can write your own appender (if you look
> at the screen appender or the FAQ, you'll see that this is trivial).
Thanks. I may decide to go this route.
> This raises the question: What are you trying to do? Why do you need
> warp_message? I don't see how you could use it in a meaningful way with
> the default screen appender.
I am trying to graft several fancy features onto log4perl.
Notes:
I think I could do 1 using warp_message. I suspect I _couldn't_ do 2
and 3, because the stack trace (%T) is not part of the @_ passed to the
warp_message sub... but I hadn't gotten that far when I realized that
Log::Log4perl::Appender::Screen doesn't support warp_message.
Features:
1) Automagically use Data::Dumper on any references passed. E.g. if I do
debug( 'The hash was ', \%hash, ' and the array was ', $array_ref );
I want log4perl to dump those refs for me. Laziness. :)
2) Limit stack traces by number of stack frames, not by number of characters.
Actually, I think this would be a nice feature to add to log4perl sometime.
What do you think? I see l4p uses Carp::longmess; if it used Devel::StackTrace,
this would be easier.
For now, I was just trying to kludge it in by doing a regex substitution
on the whole longmess.
3) Filter out Catalyst internals from stack traces.
This would also be easier with Devel::StackTrace, because it provides an
ignore_package option (see
http://search.cpan.org/~drolsky/Devel-StackTrace-1.15/lib/Devel/StackTrace.pm ).
For now, I was planning to, again, regex-massage the stack trace. But,
again, I'm not sure I even get access to the stack trace in the warp_message
sub.
Anyway... since warp_message doesn't seem to DWIM, I will probably implement
these features by hacking or subclassing Catalyst::Log::Log4perl.
It defines versions of debug, info, et cetera that enqueue your messages;
then later its _flush method gets called and sends them on to log4perl.
So I can hack the enqueueing methods to "warp" my message as I desire.
I hope this message was interesting to someone. :)
--
Quinn Weaver, independent contractor | President, San Francisco Perl Mongers
http://fairpath.com/quinn/resume/ | http://sf.pm.org/
510-520-5217
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
log4perl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/log4perl-devel