IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 32374 for trunk/PS-IPP-Config


Ignore:
Timestamp:
Sep 8, 2011, 2:12:04 PM (15 years ago)
Author:
bills
Message:

Added method redirect_to_logfile to PS::IPP::Config class. This checks for an existing log file.
If found renames it by appending a date string, then redirects STDOUT and STDERR to the new log file.
The name of the renamed file is included in the log.
In chip_imfile.pl use the new function and stop passing the -log parameter to ppImage. This should
lead to a consistent log output.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/PS-IPP-Config/lib/PS/IPP/Config.pm

    r31907 r32374  
    2020use Getopt::Long 2.33 qw( GetOptions :config gnu_getopt pass_through ); # Set pass_through so we don't kill @ARGV
    2121use IPC::Cmd 0.36 qw( can_run run );
     22use POSIX qw( strftime );
    2223
    2324use base qw( Exporter Class::Accessor::Fast );
     
    692693}
    693694
     695
     696
    694697# redirect stderr and stdout streams to a file
    695698sub redirect_output
     
    722725
    723726    return 1;
     727}
     728
     729# redirect stderr and stdout streams to log file. If file already exists rename it and record
     730# the name in the new log file.
     731sub redirect_to_logfile {
     732    my $self = shift;
     733    my $name = shift;
     734   
     735    my $tstring = strftime "%Y%m%dT%H%M", gmtime;
     736
     737    my $old_name;
     738    my $scheme = file_scheme($name);
     739    if ($scheme eq 'neb') {
     740        my $neb = $self->nebulous;
     741        if ($neb->storage_object_exists($name)) {
     742            eval {
     743                $old_name = "$name.$tstring";
     744                $neb->move($name, $old_name);
     745            };
     746            if ($@) {
     747                carp "nebulous move failed for $name";
     748                return undef;
     749            }
     750        }
     751    } else {
     752        if ($self->file_exists($name)) {
     753            my $resolved = $self->file_resolve($name);
     754            $old_name = "$resolved.$tstring";
     755            if (!rename($resolved, $old_name)) {
     756                carp "Failed to rename $resolved $old_name";
     757                return undef;
     758            }
     759        }
     760    }
     761    my $result = $self->redirect_output($name);
     762    if ($result and $old_name) {
     763        print "\nPrevious log file moved to $old_name\n";
     764    }
     765    return $result;
    724766}
    725767
Note: See TracChangeset for help on using the changeset viewer.