Example:
sub foo { my $calling_sub = (caller 1)[3]; $calling_sub = 'the main block' if !defined $calling_sub; print "called from: $calling_sub\n"; } sub bar { foo(); } bar(); # prints: called from: main::bar foo(); # prints: called from: the main block
Personally, when I need additional log information depending on context, I prefer to use explicit parameters for the logging function. This way, I have more control on the logging protocol, and the individual context tags at each logger call make it easy to map log messages back to the related pieces of code without exposing program internals in the logs. I do not depend on a one-to-one relationship between subroutine names and things worth while to log, either.
Example:
# using Sys::Syslog log levels sub open_db { my $dbname = shift; # ... if (defined $dbh) { log_this(LOG_NOTICE, 'OPEN_DB', $dbname, 'db connection establ +ished'); } else { log_this(LOG_ERR, 'OPEN_DB_NOK', $dbname, 'db connection faile +d'); } }
In reply to Re: Reference sub name
by martin
in thread Reference sub name
by ewhitt
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |