X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXLog.pm;h=03dc42843ab162051bb19cac2eabaf78ed2f86bb;hb=f155969d600561b9ef151a7ce2494a0c89aed033;hp=e4f228035194c42dea45ab9b9129c5e5f7666e6c;hpb=cef696652d16bbeec53aca45234ea0b64f3496d3;p=spider.git diff --git a/perl/DXLog.pm b/perl/DXLog.pm index e4f22803..03dc4284 100644 --- a/perl/DXLog.pm +++ b/perl/DXLog.pm @@ -27,17 +27,16 @@ package DXLog; require Exporter; @ISA = qw(Exporter); -@EXPORT = qw(Log); +@EXPORT = qw(Log Logclose); -use FileHandle; +use IO::File; use DXVars; -use DXDebug (); use DXUtil; use Julian; + use Carp; use strict; - use vars qw($log); $log = new('log', 'dat', 'm'); @@ -51,10 +50,10 @@ sub new my $ref = {}; $ref->{prefix} = "$main::data/$prefix"; $ref->{suffix} = $suffix if $suffix; - $ref->{sort} = $sort; + $ref->{'sort'} = $sort; # make sure the directory exists - mkdir($ref->{prefix}, 0777) if ! -e $ref->{prefix}; + mkdir($ref->{prefix}, 0777) unless -e $ref->{prefix}; return bless $ref; } @@ -67,17 +66,16 @@ sub open if (defined $mode) { my $dir = "$self->{prefix}/$year"; mkdir($dir, 0777) if ! -e $dir; - $self->{mode} = $mode; - } else { - delete $self->{mode}; } - $self->{fn} = sprintf "$self->{prefix}/$year/%02d", $thing if $self->{sort} eq 'm'; - $self->{fn} = sprintf "$self->{prefix}/$year/%03d", $thing if $self->{sort} eq 'd'; + $self->{fn} = sprintf "$self->{prefix}/$year/%02d", $thing if $self->{'sort'} eq 'm'; + $self->{fn} = sprintf "$self->{prefix}/$year/%03d", $thing if $self->{'sort'} eq 'd'; $self->{fn} .= ".$self->{suffix}" if $self->{suffix}; $mode = 'r' if !$mode; - my $fh = new FileHandle $self->{fn}, $mode; + $self->{mode} = $mode; + + my $fh = new IO::File $self->{fn}, $mode, 0666; return undef if !$fh; $fh->autoflush(1) if $mode ne 'r'; # make it autoflushing if writable $self->{fh} = $fh; @@ -85,7 +83,7 @@ sub open $self->{year} = $year; $self->{thing} = $thing; - DXDebug::dbg("dxlog", "opening $self->{fn}\n"); +# DXDebug::dbg("dxlog", "opening $self->{fn}\n"); return $self->{fh}; } @@ -94,9 +92,9 @@ sub open sub openprev { my $self = shift; - if ($self->{sort} eq 'm') { + if ($self->{'sort'} eq 'm') { ($self->{year}, $self->{thing}) = Julian::subm($self->{year}, $self->{thing}, 1); - } elsif ($self->{sort} eq 'd') { + } elsif ($self->{'sort'} eq 'd') { ($self->{year}, $self->{thing}) = Julian::sub($self->{year}, $self->{thing}, 1); } return $self->open($self->{year}, $self->{thing}, @_); @@ -106,9 +104,9 @@ sub openprev sub opennext { my $self = shift; - if ($self->{sort} eq 'm') { + if ($self->{'sort'} eq 'm') { ($self->{year}, $self->{thing}) = Julian::addm($self->{year}, $self->{thing}, 1); - } elsif ($self->{sort} eq 'd') { + } elsif ($self->{'sort'} eq 'd') { ($self->{year}, $self->{thing}) = Julian::add($self->{year}, $self->{thing}, 1); } return $self->open($self->{year}, $self->{thing}, @_); @@ -119,9 +117,9 @@ sub unixtoj { my $self = shift; - if ($self->{sort} eq 'm') { + if ($self->{'sort'} eq 'm') { return Julian::unixtojm(shift); - } elsif ($self->{sort} eq 'd') { + } elsif ($self->{'sort'} eq 'd') { return Julian::unixtoj(shift); } confess "shouldn't get here"; @@ -163,8 +161,14 @@ sub close { my $self = shift; undef $self->{fh}; # close the filehandle - delete $self->{fh}; - delete $self->{mode}; + delete $self->{fh}; +} + +sub DESTROY +{ + my $self = shift; + undef $self->{fh}; # close the filehandle + delete $self->{fh} if $self->{fh}; } # log something in the system log @@ -177,10 +181,8 @@ sub Log $log->writeunix($t, join('^', $t, @_) ); } -sub DESTROY # catch undefs and do what is required further do the tree +sub Logclose { - my $self = shift; - DXDebug::dbg("dxlog", "closing $self->{fn}\n"); - undef $self->{fh} if defined $self->{fh}; -} + $log->close(); +} 1;