ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Log.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/Log.pm (file contents):
Revision 1.59 by root, Mon Apr 9 02:25:48 2012 UTC vs.
Revision 1.61 by root, Wed Jul 31 00:03:00 2013 UTC

153our ($COLLECT, $FILTER, $LOG); 153our ($COLLECT, $FILTER, $LOG);
154 154
155our ($now_int, $now_str1, $now_str2); 155our ($now_int, $now_str1, $now_str2);
156 156
157# Format Time, not public - yet? 157# Format Time, not public - yet?
158sub ft($) { 158sub format_time($) {
159 my $i = int $_[0]; 159 my $i = int $_[0];
160 my $f = sprintf "%06d", 1e6 * ($_[0] - $i); 160 my $f = sprintf "%06d", 1e6 * ($_[0] - $i);
161 161
162 ($now_int, $now_str1, $now_str2) = ($i, split /\x01/, POSIX::strftime "%Y-%m-%d %H:%M:%S.\x01 %z", localtime $i) 162 ($now_int, $now_str1, $now_str2) = ($i, split /\x01/, POSIX::strftime "%Y-%m-%d %H:%M:%S.\x01 %z", localtime $i)
163 if $now_int != $i; 163 if $now_int != $i;
262}; 262};
263 263
264our @LEVEL2STR = qw(0 fatal alert crit error warn note info debug trace); 264our @LEVEL2STR = qw(0 fatal alert crit error warn note info debug trace);
265 265
266# time, ctx, level, msg 266# time, ctx, level, msg
267sub _format($$$$) { 267sub default_format($$$$) {
268 my $ts = ft $_[0]; 268 my $ts = format_time $_[0];
269 my $ct = " "; 269 my $ct = " ";
270 270
271 my @res; 271 my @res;
272 272
273 for (split /\n/, sprintf "%-5s %s: %s", $LEVEL2STR[$_[2]], $_[1][0], $_[3]) { 273 for (split /\n/, sprintf "%-5s %s: %s", $LEVEL2STR[$_[2]], $_[1][0], $_[3]) {
322 }; 322 };
323 323
324 # format msg 324 # format msg
325 my $str = $ctx->[4] 325 my $str = $ctx->[4]
326 ? $ctx->[4]($now, $_[0], $level, $format) 326 ? $ctx->[4]($now, $_[0], $level, $format)
327 : ($fmt[$level] ||= _format $now, $_[0], $level, $format); 327 : ($fmt[$level] ||= default_format $now, $_[0], $level, $format);
328 328
329 $success = 1; 329 $success = 1;
330 330
331 $ctx->[3]($str) 331 $ctx->[3]($str)
332 or push @ctx, values %{ $ctx->[2] }; # not consumed - propagate 332 or push @ctx, values %{ $ctx->[2] }; # not consumed - propagate
454Since C<AnyEvent::Log> has to work even before the L<AnyEvent> has been 454Since C<AnyEvent::Log> has to work even before the L<AnyEvent> has been
455initialised, this switch will also decide whether to use C<CORE::time> or 455initialised, this switch will also decide whether to use C<CORE::time> or
456C<Time::HiRes::time> when logging a message before L<AnyEvent> becomes 456C<Time::HiRes::time> when logging a message before L<AnyEvent> becomes
457available. 457available.
458 458
459=item AnyEvent::Log::format_time $timestamp
460
461Formats a timestamp as returned by C<< AnyEvent->now >> or C<<
462AnyEvent->time >> or many other functions in the same way as
463C<AnyEvent::Log> does.
464
465In your main program (as opposed to in your module) you can override
466the default timestamp display format by loading this module and then
467redefining this function.
468
469Most commonly, this function can be used in formatting callbacks.
470
471=item AnyEvent::Log::default_format $time, $ctx, $level, $msg
472
473Format a log message using the given timestamp, logging context, log level
474and log message.
475
476This is the formatting function used to format messages when no custom
477function is provided.
478
479In your main program (as opposed to in your module) you can override the
480default message format by loading this module and then redefining this
481function.
482
483=item AnyEvent::Log::fatal_exit
484
485This is the function that is called after logging a C<fatal> log
486message. It must not return.
487
488The default implementation simpl calls C<exit 1>.
489
490In your main program (as opposed to in your module) you can override
491the fatal exit function by loading this module and then redefining this
492function. Make sure you don't return.
493
459=back 494=back
460 495
461=head1 LOGGING CONTEXTS 496=head1 LOGGING CONTEXTS
462 497
463This module associates every log message with a so-called I<logging 498This module associates every log message with a so-called I<logging
907reference that just stores the values. 942reference that just stores the values.
908 943
909If, for some reason, you want to use C<caller> to find out more about the 944If, for some reason, you want to use C<caller> to find out more about the
910logger then you should walk up the call stack until you are no longer 945logger then you should walk up the call stack until you are no longer
911inside the C<AnyEvent::Log> package. 946inside the C<AnyEvent::Log> package.
947
948To implement your own logging callback, you might find the
949C<AnyEvent::Log::format_time> and C<AnyEvent::Log::default_format>
950functions useful.
951
952Example: format the message just as AnyEvent::Log would, by letting
953AnyEvent::Log do the work. This is a good basis to design a formatting
954callback that only changes minor aspects of the formatting.
955
956 $ctx->fmt_cb (sub {
957 my ($time, $ctx, $lvl, $msg) = @_;
958
959 AnyEvent::Log::default_format $time, $ctx, $lvl, $msg
960 });
912 961
913Example: format just the raw message, with numeric log level in angle 962Example: format just the raw message, with numeric log level in angle
914brackets. 963brackets.
915 964
916 $ctx->fmt_cb (sub { 965 $ctx->fmt_cb (sub {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines