$ cat 666463.pl use strict; use warnings; use Log::Log4perl; use Log::Dispatch::FileRotate; my $conf = q( log4perl.category.foo = DEBUG, FileRotateAppender log4perl.appender.FileRotateAppender = Log::Dispatch::FileRotate log4perl.appender.FileRotateAppender.filename = foo.log log4perl.appender.FileRotateAppender.mode = append log4perl.appender.FileRotateAppender.size = 100000 log4perl.appender.FileRotateAppender.max = 5 log4perl.appender.FileRotateAppender.layout = PatternLayout log4perl.appender.FileRotateAppender.layout.ConversionPattern=[%p] %d %M %F:%L:- %m%n ); Log::Log4perl::init( \$conf ); my $log = Log::Log4perl::get_logger("foo"); sub check_something { my $something = shift; $log->debug(qq{something:'$something'}) if $log->is_debug(); if (!defined($something)) { $log->error(qq{something is nothing!}) if $log->is_error(); } return $something; } # ------ main ------ check_something(q{hello}); check_something(); __END__ #### $ perl 666463.pl Use of uninitialized value in concatenation (.) or string at 666463.pl line 23. #### $ tail foo.log [DEBUG] 2008/02/06 10:45:00 main::check_something 666463.pl:23:- something:'hello' [DEBUG] 2008/02/06 10:45:00 main::check_something 666463.pl:23:- something:'' [ERROR] 2008/02/06 10:45:00 main::check_something 666463.pl:24:- something is nothing!