in reply to Automating File Rotation

Logfile::Rotate

Replies are listed 'Best First'.
Re^2: Automating File Rotation
by Anonymous Monk on Sep 14, 2004 at 18:54 UTC
    I checked that module out but it only increments the name of the logfile as specified by a counter value. I was hoping to rotate mine based on a time value

      So copy the module, rename it, add use POSIX qw(strftime);, remove

      for($i = $self->{'Count'}; $i > 1; $i--) { $j = $i - 1; $next = "${currn}." . $i . $ext; $prev = "${currn}." . $j . $ext; if ( -r $prev && -f $prev ) { move($prev,$next) ## move will attempt rename for us or croak "error: move failed: ($prev,$next)"; } }

      and change
      $next = "${currn}.1";
      to
      $next = "${currn}_" . strfmt('...', localtime);

      Here's some time formats friendly to Windows and UNIX shells which are string-sortable:

      use POSIX qw(strftime); @t = localtime; $\ = "\n"; print strftime("%Y%m%d%H%M%S", @t); # logfile_20040914151753 print strftime("%Y%m%d-%H%M%S", @t); # logfile_20040914-151753 print strftime("%Y-%m-%d-%H%M%S", @t); # logfile_2004-09-14-151753 print strftime("%Y-%m-%d@%H-%M-%S", @t); # logfile_2004-09-14@15-17-53