NAME

Log::Dispatch::Config::Watcher - Subclass of Log::Dispatch::Config that observes the start and the end of functions

SYNOPSIS

#---------- code ---------- use Log::Dispatch::Config::Watcher; use Log::Dispatch::Configurator::YAML;

my $config = Log::Dispatch::Configurator::YAML->new('/path/to/log.yaml'); Log::Dispatch::Config::Watcher->configure($config); my $log = Log::Dispatch::Config::Watcher->instance;

$log->info('log message'); test1(); test2(); test3();

sub test1 { # observed + warn $log->warn('sample warning.'); sleep 4; }

sub test2 { # not observed + exepected die(eval) + warn eval { die 'die with expected exception'; }; warn $@ if $@; }

sub test3 { # observed + unexpected die(not eval) sleep 5; die 'die with unexpected exception.'; }

#---------- YAML file ---------- YAML format strongly recommended dispatchers: - screen screen: class: Log::Dispatch::Screen min_level: debug format: '[%p] %F:%L %m [%D{%F %T.%6N%z}]' # see DateTime::Format::Strptime newline: 1 stderr: 1 watch: watch_die: 1 # watching perl's die method. watch_only_unexpected_die: 1 watch_warn: 1 # watching perl's warn method. die_level: critical warn_level: warning formats: start: '[%p] START:%j [%D{%F %T.%6N%z}]' end: '[%p] END:%j(%t) [%D{%F %T.%6N%z}]' end_with_die: '[%p] ABNORMALLY_ENDED:%j(%e) [%D{%F %T.%6N%z}]' die: '[%p] UNEXPECTED_DIE (%e) [%D{%F %T.%6N%z}]' warn: '[%p] PERL_WARNING (%e) [%D{%F %T.%6N%z}]' timeover: '[%p] TIMEOVER:%j(%t)' functions: main::test1: # function name. Don't forget adding the package name. description: sleep 4 seconds process warn_duration: 5.0 # write seconds. notice_duration: 3.5 main::test3: description: sleep 5 seconds process warn_duration: 4.0 notice_duration: 2.5

#---------- results ---------- [info] ./log.pl:13 log message [2010-07-30 15:34:16.316215+0900]

[info] START:"sleep 4 seconds process" [2010-07-30 15:34:16.319123+0900] [warn] ./log.pl:19 sample warning. [2010-07-30 15:34:16.320854+0900] [notice] TIMEOVER:"sleep 4 seconds process"(=>00:00:04.005179167) [info] END:"sleep 4 seconds process"(=>00:00:04.005179167) [2010-07-30 15:34:20.324692+0900]

[warning] PERL_WARNING (die with expected exception at ./log.pl line 25.)

[info] START:"sleep 5 seconds process" [2010-07-30 15:34:25.328754+0900] [warning] TIMEOVER:"sleep 5 seconds process"(=>00:00:05.00351812) [critical] ABNORMALLY_ENDED:"sleep 5 seconds process"(die with unexpected exception. at ./log.pl line 30.) [2010-07-30 15:34:25.330754+0900]

POD BUGS

This POD does'nt make sense because my English Sux.

The best way to understand the usage of this module is reading the "SYNOPSIS" section.

Reading the "DESCRIPTION" section makes you confusing, I guess.

DESCRIPTION

This is a subclass of Log::Dispatch::Config that watches the start and the end of functions, warn and die.

Watch object

This class watches the start and the end of the function whose name is defined in a config file, and outputs the log whose format is defined in a config file.

Moreover, the log level can be switched based on the elapsed time.

This class watches the perl's warn and die.

When the warn or die is invoked, it is converted into the Log::Dispatch::log method.

SEE ALSO Log::WarnDie

Enhancing of format character

Explanation of the function (watch.formats.functions.[function name].description)

Error message of warn and die ($@)

Execution time of function to be observed

Output format of time which is passed to DateTime::Format::Strptime.

format list

Log format that is used when the function is started.

Log format that is used when the function is ended.

Log format that is used when the function is died.

Log format that is used when the execution time of the function ran over "warn_duration" or "notice_duration" time.

Log format that is used when the program is died.

Log format that is used when the program calls a warn method.

CONFIGURATION

Here is an example of the config file:

dispatchers: - screen screen: class: Log::Dispatch::Screen min_level: debug format: '[%p] %F:%L %m [%D{%F %T.%6N%z}]' newline: 1 stderr: 1 watch: watch_die: 1 watch_only_unexpected_die: 1 watch_warn: 1 die_level: critical warn_level: warning formats: start: '[%p] START:%j [%D{%F %T.%6N%z}]' end: '[%p] END:%j(%t) [%D{%F %T.%6N%z}]' end_with_die: '[%p] ABNORMALLY_ENDED:%j(%e) [%D{%F %T.%6N%z}]' die: '[%p] UNEXPECTED_DIE (%e) [%D{%F %T.%6N%z}]' warn: '[%p] PERL_WARNING (%e)' timeover: '[%p] TIMEOVER:%j(%t)' functions: main::test1: description: sleep some seconds process warn_duration: 5.0 notice_duration: 3.5 main::test2: description: sleep some seconds process warn_duration: 4.0 notice_duration: 2.5 time_zone: Asia/Tokyo

YAML format is strongly recommended.

Disabling or enabling the watching of the perl's die. default is 0.

Disabling or enabling the watching of the perl's die. default is 0.

Disabling or enabling the watching of the perl's warn. default is 0.

default is critical.

default is warning.

see DESCRIPTION section.

DEPENDENCIES

TODO

AUTHOR

keroyon keroyon@cpan.org

SEE ALSO

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.