http://qs321.pair.com?node_id=823271

chanakya has asked for the wisdom of the Perl Monks concerning the following question:

Monks
I have a working code using Log::Dispatch::FileRotate, I wanted to extend this using Log::Dispatch::FileRolling to rotate log files based on date (idea is every date should have one log file).
I have modified the script to use Log::Dispatch::FileRolling. The script dies after starting, doesn't throw any error as well.
Please let me know whats the problem with the code
#!/usr/bin/perl use strict; use warnings; use Log::Dispatch; use Log::Dispatch::FileRolling; use Date::Format; use File::Spec; my @loc = localtime(); my $current_date = Date::Format::strftime("%Y%m%d", @loc); my $log_dir = "/tmp/myapp"; my $logfile = "myapp.%d{yyyyMMdd}.log"; our $HOSTNAME = `hostname`; chomp $HOSTNAME; my $log = new Log::Dispatch( callbacks => sub { my %h=@_; return $HOSTNAME." $0 \[$$]: ".$h{m +essage}."\n"; } ); $log->add(Log::Dispatch::FileRolling->new( name => 'file1', min_level => 'info', filename => File::Spec->catfi +le($log_dir, $logfile), mode => 'append' ) ); $log->info("Starting Processing: ".localtime());

Replies are listed 'Best First'.
Re: Log::Dispatch::FileRolling ?
by repellent (Priest) on Feb 15, 2010 at 18:10 UTC
      The script dies after starting, doesn't throw any error as well.

    If no error is thrown, how do you know that it "died"?

    You may want to use Log::Dispatch::File::Rolling instead of Log::Dispatch::FileRolling like you did in the code shown (note the third ::).
      Aah! I knew it should be simple error.
      I was using Proc::Daemon within the script, with this enable the script did not show the error, I should have commented it out.

      Thanks for catching the error. The code works now.