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.46 by root, Sun Oct 2 01:22:01 2011 UTC vs.
Revision 1.54 by root, Tue Mar 27 23:47:57 2012 UTC

6 6
7Simple uses: 7Simple uses:
8 8
9 use AnyEvent; 9 use AnyEvent;
10 10
11 AE::log fatal => "No config found, cannot continue!"; # never returns
12 AE::log alert => "The battery died!";
13 AE::log crit => "The battery temperature is too hot!";
14 AE::log error => "Division by zero attempted.";
15 AE::log warn => "Couldn't delete the file.";
16 AE::log note => "Wanted to create config, but config already exists.";
17 AE::log info => "File soandso successfully deleted.";
18 AE::log debug => "the function returned 3";
11 AE::log trace => "going to call function abc"; 19 AE::log trace => "going to call function abc";
12 AE::log debug => "the function returned 3";
13 AE::log info => "file soandso successfully deleted";
14 AE::log note => "wanted to create config, but config was alraedy created";
15 AE::log warn => "couldn't delete the file";
16 AE::log error => "failed to retrieve data";
17 AE::log crit => "the battery temperature is too hot";
18 AE::log alert => "the battery died";
19 AE::log fatal => "no config found, cannot continue"; # never returns
20 20
21Log level overview: 21Log level overview:
22 22
23 LVL NAME SYSLOG PERL NOTE 23 LVL NAME SYSLOG PERL NOTE
24 1 fatal emerg exit system unusable, aborts program! 24 1 fatal emerg exit system unusable, aborts program!
61attempt to be "the" logging solution or even "a" logging solution for 61attempt to be "the" logging solution or even "a" logging solution for
62AnyEvent - AnyEvent simply creates logging messages internally, and this 62AnyEvent - AnyEvent simply creates logging messages internally, and this
63module more or less exposes the mechanism, with some extra spiff to allow 63module more or less exposes the mechanism, with some extra spiff to allow
64using it from other modules as well. 64using it from other modules as well.
65 65
66Remember that the default verbosity level is C<0> (C<off>), so nothing 66Remember that the default verbosity level is C<4> (C<error>), so only
67will be logged, unless you set C<PERL_ANYEVENT_VERBOSE> to a higher number 67errors and more important messages will be logged, unless you set
68before starting your program, or change the logging level at runtime with 68C<PERL_ANYEVENT_VERBOSE> to a higher number before starting your program
69something like: 69(C<AE_VERBOSE=5> is recommended during development), or change the logging
70level at runtime with something like:
70 71
71 use AnyEvent::Log; 72 use AnyEvent::Log;
72 $AnyEvent::Log::FILTER->level ("info"); 73 $AnyEvent::Log::FILTER->level ("info");
73 74
74The design goal behind this module was to keep it simple (and small), 75The design goal behind this module was to keep it simple (and small),
106is the "official" name, the second one the "syslog" name (if it differs) 107is the "official" name, the second one the "syslog" name (if it differs)
107and the third one the "perl" name, suggesting (only!) that you log C<die> 108and the third one the "perl" name, suggesting (only!) that you log C<die>
108messages at C<error> priority. The NOTE column tries to provide some 109messages at C<error> priority. The NOTE column tries to provide some
109rationale on how to chose a logging level. 110rationale on how to chose a logging level.
110 111
111As a rough guideline, levels 1..3 are primarily meant for users of 112As a rough guideline, levels 1..3 are primarily meant for users of the
112the program (admins, staff), and are the only logged to STDERR by 113program (admins, staff), and are the only ones logged to STDERR by
113default. Levels 4..6 are meant for users and developers alike, while 114default. Levels 4..6 are meant for users and developers alike, while
114levels 7..9 are usually meant for developers. 115levels 7..9 are usually meant for developers.
115 116
116You can normally only log a single message at highest priority level 117You can normally only log a message once at highest priority level (C<1>,
117(C<1>, C<fatal>), because logging a fatal message will also quit the 118C<fatal>), because logging a fatal message will also quit the program - so
118program - so use it sparingly :) 119use it sparingly :)
120
121For example, a program that finds an unknown switch on the commandline
122might well use a fatal logging level to tell users about it - the "system"
123in this case would be the program, or module.
119 124
120Some methods also offer some extra levels, such as C<0>, C<off>, C<none> 125Some methods also offer some extra levels, such as C<0>, C<off>, C<none>
121or C<all> - these are only valid in the methods they are documented for. 126or C<all> - these are only valid for the methods that documented them.
122 127
123=head1 LOGGING FUNCTIONS 128=head1 LOGGING FUNCTIONS
124 129
125These functions allow you to log messages. They always use the caller's 130The following functions allow you to log messages. They always use the
126package as a "logging context". Also, the main logging function C<log> is 131caller's package as a "logging context". Also, the main logging function,
127callable as C<AnyEvent::log> or C<AE::log> when the C<AnyEvent> module is 132C<log>, is aliased to C<AnyEvent::log> and C<AE::log> when the C<AnyEvent>
128loaded. 133module is loaded.
129 134
130=over 4 135=over 4
131 136
132=cut 137=cut
133 138
894 899
895Replaces the formatting callback on the context (C<undef> restores the 900Replaces the formatting callback on the context (C<undef> restores the
896default formatter). 901default formatter).
897 902
898The callback is passed the (possibly fractional) timestamp, the original 903The callback is passed the (possibly fractional) timestamp, the original
899logging context, the (numeric) logging level and the raw message string 904logging context (object, not title), the (numeric) logging level and
900and needs to return a formatted log message. In most cases this will be a 905the raw message string and needs to return a formatted log message. In
901string, but it could just as well be an array reference that just stores 906most cases this will be a string, but it could just as well be an array
902the values. 907reference that just stores the values.
903 908
904If, for some reason, you want to use C<caller> to find out more baout the 909If, for some reason, you want to use C<caller> to find out more about the
905logger then you should walk up the call stack until you are no longer 910logger then you should walk up the call stack until you are no longer
906inside the C<AnyEvent::Log> package. 911inside the C<AnyEvent::Log> package.
907 912
908Example: format just the raw message, with numeric log level in angle 913Example: format just the raw message, with numeric log level in angle
909brackets. 914brackets.
913 918
914 "<$lvl>$msg\n" 919 "<$lvl>$msg\n"
915 }); 920 });
916 921
917Example: return an array reference with just the log values, and use 922Example: return an array reference with just the log values, and use
918C<PApp::SQL::sql_exec> to store the emssage in a database. 923C<PApp::SQL::sql_exec> to store the message in a database.
919 924
920 $ctx->fmt_cb (sub { \@_ }); 925 $ctx->fmt_cb (sub { \@_ });
921 $ctx->log_cb (sub { 926 $ctx->log_cb (sub {
922 my ($msg) = @_; 927 my ($msg) = @_;
923 928
1041 1046
1042=item $ctx->log ($level, $msg[, @params]) 1047=item $ctx->log ($level, $msg[, @params])
1043 1048
1044Same as C<AnyEvent::Log::log>, but uses the given context as log context. 1049Same as C<AnyEvent::Log::log>, but uses the given context as log context.
1045 1050
1051Example: log a message in the context of another package.
1052
1053 (AnyEvent::Log::ctx "Other::Package")->log (warn => "heely bo");
1054
1046=item $logger = $ctx->logger ($level[, \$enabled]) 1055=item $logger = $ctx->logger ($level[, \$enabled])
1047 1056
1048Same as C<AnyEvent::Log::logger>, but uses the given context as log 1057Same as C<AnyEvent::Log::logger>, but uses the given context as log
1049context. 1058context.
1050 1059
1197 1206
1198Attaches the named context as slave to the context. 1207Attaches the named context as slave to the context.
1199 1208
1200=item C<+> 1209=item C<+>
1201 1210
1202A line C<+> detaches all contexts, i.e. clears the slave list from the 1211A lone C<+> detaches all contexts, i.e. clears the slave list from the
1203context. Anonymous (C<%name>) contexts have no attached slaves by default, 1212context. Anonymous (C<%name>) contexts have no attached slaves by default,
1204but package contexts have the parent context as slave by default. 1213but package contexts have the parent context as slave by default.
1205 1214
1206Example: log messages from My::Module to a file, do not send them to the 1215Example: log messages from My::Module to a file, do not send them to the
1207default log collector. 1216default log collector.
1283 if (/\G(.+)/g) { 1292 if (/\G(.+)/g) {
1284 die "PERL_ANYEVENT_LOG ($spec): parse error at '$1'\n"; 1293 die "PERL_ANYEVENT_LOG ($spec): parse error at '$1'\n";
1285 } 1294 }
1286} 1295}
1287 1296
12881;
1289
1290=head1 EXAMPLES 1297=head1 EXAMPLES
1291 1298
1292This section shows some common configurations, both as code, and as 1299This section shows some common configurations, both as code, and as
1293C<PERL_ANYEVENT_LOG> string. 1300C<PERL_ANYEVENT_LOG> string.
1294 1301
1374 Marc Lehmann <schmorp@schmorp.de> 1381 Marc Lehmann <schmorp@schmorp.de>
1375 http://home.schmorp.de/ 1382 http://home.schmorp.de/
1376 1383
1377=cut 1384=cut
1378 1385
13861
1387

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines