http://www.perlmonks.org?node_id=449725


in reply to Rotating output from the Perl debugger

I would suggest using Log::Dispatch::FileRotate for this. You can use LineInfo to direct the logging output to a pipe, running a script like this (not tested):
use strict; use Log::Dispatch::FileRotate; my $file = Log::Dispatch::FileRotate->new( name => 'file1', min_level => 'info', filename => 'Somefile.log', mode => 'append' , TZ => '0:0:0:0:2:00:0', DatePattern => 'yyyy-dd-HH', ); while (<>) { $file->log( level => 'info', message => $_); }

Replies are listed 'Best First'.
Re^2: Rotating output from the Perl debugger
by Booger (Pilgrim) on Apr 20, 2005 at 19:22 UTC
    Thanks, tall_man!

    I actually did something similar to your suggestion (not having thought to look at the node to see if anyone had posted something interesting -- duh)

    I did this:

    #!/usr/bin/perl -w use warnings; use strict; use constant SIZEOF_100MB => 104857600; $| = 1; my $filename = 'debugfile'; while (<>) { open LOGFILE, ">>$filename" || die "Unable to open '$filename': $!"; print LOGFILE $_; close LOGFILE; my @stats = stat($filename); my $bsize = $stats[7]; if ( $bsize > SIZEOF_100MB ) { my @localtime = split / +|:/, localtime(); shift @localtime; pop @localtime; my $new = "${filename}_" . join '_', @localtime; rename $filename, $new; system("gzip $new"); } } 1;

    It's probably not as elegant as your solution (I wasted more lines) but it does work.

    Thanks again!