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

Hi Monks,

I just started to learn about and switch over to this cool logging system.

I have it logging to a text file and I got ::FileRotate to work - COOL!

BUT, if you start/stop the program a few times, the only easy way to see the most recent run is to go to the end of the file and then backtrack. And I output a lot of debug data...

The mess that I had written would save a backup of the last program run in a .bak file and then start logging in the original file...

Is there anyway to combine these ideas? Or should I just get used to it ;-)

I REALLY like to always open output.log and start reading from the top...seems like the most obvious way...

thanks

Replies are listed 'Best First'.
Re: log4perl question
by zengargoyle (Deacon) on Oct 18, 2003 at 08:08 UTC

    setup your logging as normal, before the first log message hijack the modules time_to_rotate function. log the first message, replace the original function.

    this has (at least) one bug: the first time it will create logfile then rotate it to logfile.1 then create a new logfile. otherwise it should work (assuming i put back the original function correctly).

    my $l = get_logger( 'base' ); *old = \&Log::Dispatch::FileRotate::time_to_rotate; *Log::Dispatch::FileRotate::time_to_rotate = sub { return wantarray ? +( 1, 1 ) : 1 }; $l->info('starting up and forcing rotation'); *Log::Dispatch::FileRotate::time_to_rotate = \&old; $l->info('more logging as usual');