NAME
Log::Timer - track nested timing information
VERSION
version 1.0.0
SYNOPSIS
use Log::Timer;
sub some_action {
my $sub_timer = subroutine_timer();
# do things
...
}
FUNCTIONS
timer
my $timer1 = timer('GET /foo');
my $timer2 = timer('update_all_things');
my $timer3 = timer('fetching data from DB', {
prefix => $request_url,
context => $request_id,
});
Start a timer. When the returned object gets destroyed, logs the time elapsed (at trace
level).
All timers with the same $message
contribute to a set of stats, see report_timing_stats
The prefix
is just added in front of the log message.
Timers started "inside" other timers will get logged indented, so that you can see the breakdown of any outer timings. If you need to capture several timer metrics at the same level, you can pass indent_increase => 0
after the first timer.
If you're running a set of asynchronous tasks, using the same context
for each logical task (using for example a request id) will ensure that the nested indenting makes sense.
subroutine_timer
my $timer1 = subroutine_timer();
my $timer2 = subroutine_timer($message, {
prefix => $request_url,
context => $request_id,
depth => 2,
});
Same as "timer
", but the $message
is automatically prefixed with the name of the current subroutine. You can pass a depth
option (defaults to 1) to pick a sub further up the call stack.
report_timing_stats
Log::Timer::report_timing_stats();
Logs (at info
level) some statistical information about the timers ran until now, grouped by message. Then clears the stored values.
This is also called automatically at END
time.
clear_timing_stats
Log::Timer::clear_timing_stats();
Clears all values stored for statistical purposes.
AUTHORS
Johan Lindstrom <Johan.Lindstrom@broadbean.com>
Gianni Ceccarelli <gianni.ceccarelli@broadbean.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2019 by BroadBean UK, a CareerBuilder Company.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.