log4perl.logger.Siebel.Srvrmgr.Daemon=DEBUG, A1 log4perl.appender.A1=Log::Log4perl::Appender::File log4perl.appender.A1.filename=C:/Temp/perl/project.log log4perl.appender.A1.stderr=0 log4perl.appender.A1.layout=Log::Log4perl::Layout::PatternLayout log4perl.appender.A1.layout.ConversionPattern=%d %p> %F{1}:%L %M - %m%n log4perl.appender.A2= Log::Log4perl::Appender::Screen log4perl.appender.A2.stderr=0 log4perl.appender.A2.layout=Log::Log4perl::Layout::PatternLayout log4perl.appender.A2.layout.ConversionPattern=%d %p> %F{1}:%L %M - %m%n log4perl.logger.Siebel.Srvrmgr.ListParser=WARN, A2 #### sub gimme_logger { my $cfg = Siebel::Srvrmgr->logging_cfg(); die "Could not start logging facilities" unless ( Log::Log4perl->init_once( \$cfg ) ); return Log::Log4perl->get_logger('Siebel::Srvrmgr::Daemon'); } #### sub run { my $self = shift; my $logger = __PACKAGE__->gimme_logger(); weaken($logger); # rest of code goes here #### sub DEMOLISH { my $self = shift; my $logger = __PACKAGE__->gimme_logger(); weaken($logger); # rest of code goes here #### sub logging_cfg { my $cfg = undef; local $/; if ( $ENV{SIEBEL_SRVRMGR_DEBUG} ) { if ( ( -e $ENV{SIEBEL_SRVRMGR_DEBUG} ) and ( -f $ENV{SIEBEL_SRVRMGR_DEBUG} ) ) { open( my $in, '<', $ENV{SIEBEL_SRVRMGR_DEBUG} ) or die "Cannot read $ENV{SIEBEL_SRVRMGR_DEBUG}: $!"; $cfg = <$in>; close($in); } else { die 'ENV SIEBEL_SRVRMGR_DEBUG is defined but the value does not exists in the filesystem or is not a file'; } } else { $cfg = ; } return $cfg; } #### C:\Temp\memcached>server2.pl Starting Nagios::Cache::Server...done Starting RPC::XML::Server...done Ready to accept requests close() on unopened filehandle FH at C:/strawberry/perl/site/lib/Log/Log4perl/Appender/File.pm line 257 during global destruction. Can't close C:/Temp/perl/project.log (Bad file descriptor) at C:/strawberry/perl/site/lib/Log/Log4perl/Appender/File.pm line 282 during global destruction.