#
# Copyright (c) - 1998 Dirk Koopman G1TLH
#
-# $Id$
+#
#
package DXLog;
require Exporter;
@ISA = qw(Exporter);
-@EXPORT = qw(Log Logclose);
+@EXPORT = qw(Log LogDbg Logclose);
use IO::File;
use DXVars;
use strict;
-use vars qw($VERSION $BRANCH);
-$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0));
-$main::build += $VERSION;
-$main::branch += $BRANCH;
-
-use vars qw($log);
+use vars qw($log %logs);
$log = new('log', 'dat', 'm');
sub new
{
my ($prefix, $suffix, $sort) = @_;
- my $ref = {};
- $ref->{prefix} = "$main::data/$prefix";
+ my $ref = bless {}, __PACKAGE__;
+ localdata_mv($prefix);
+ $ref->{prefix} = "$main::local_data/$prefix";
$ref->{suffix} = $suffix if $suffix;
$ref->{sort} = $sort;
# make sure the directory exists
mkdir($ref->{prefix}, 0777) unless -e $ref->{prefix};
- return bless $ref;
+ $logs{$ref} = $ref;
+
+ return $ref;
}
sub _genfn
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
+ $fh->autoflush(0); # autofluahing off
$self->{fh} = $fh;
# print "opening $self->{fn}\n";
sub write($$$)
{
my ($self, $jdate, $line) = @_;
+ return unless $self && $jdate;
if (!$self->{fh} ||
$self->{mode} ne ">>" ||
$jdate->year != $self->{jdate}->year ||
sub DESTROY
{
my $self = shift;
+ delete $logs{$self};
undef $self->{fh}; # close the filehandle
delete $self->{fh} if $self->{fh};
}
+sub flushall
+{
+ foreach my $l (values %logs) {
+ $l->{fh}->flush if exists $l->{fh};
+ }
+}
+
# log something in the system log
# this routine is exported to any module that declares DXLog
# it takes all its args and joins them together with the unixtime writes them out as one line
$log->writeunix($t, join('^', $t, @_) );
}
+sub LogDbg
+{
+ DXDebug::dbg($_) for @_;
+ Log(@_);
+}
+
sub Logclose
{
$log->close();