mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
Archiving added to the main logfile
git-svn-id: https://svn.fhem.de/fhem/trunk@84 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
ee3446ad39
commit
bbeb12b59e
@ -321,7 +321,7 @@
|
|||||||
documentation added.
|
documentation added.
|
||||||
- bugfix: more thorough serial line initialization
|
- bugfix: more thorough serial line initialization
|
||||||
|
|
||||||
- ==DATE== (4.1)
|
- 2007-08-05 (4.1)
|
||||||
- doc: linux.html (private udev-rules, not 50-..., ATTRS)
|
- doc: linux.html (private udev-rules, not 50-..., ATTRS)
|
||||||
- bugfix: setting devices with "-" in their name did not work
|
- bugfix: setting devices with "-" in their name did not work
|
||||||
- doc: fhem.pl and commandref.html (notifyon -> notify, correction
|
- doc: fhem.pl and commandref.html (notifyon -> notify, correction
|
||||||
@ -338,3 +338,6 @@
|
|||||||
- bugfix: SCIVT solar controller (peterp, 1.7)
|
- bugfix: SCIVT solar controller (peterp, 1.7)
|
||||||
- bugfix: WS300 loglevel change (from 2 to 5 or device specific loglevel)
|
- bugfix: WS300 loglevel change (from 2 to 5 or device specific loglevel)
|
||||||
- feature: First steps for a Fritz!Box port. See the fritzbox.html
|
- feature: First steps for a Fritz!Box port. See the fritzbox.html
|
||||||
|
|
||||||
|
- ==DATE== (4.2)
|
||||||
|
- feature: added archivedir/archivecmd to the the main logfile
|
||||||
|
@ -40,8 +40,8 @@ FileLog_Define($@)
|
|||||||
|
|
||||||
$hash->{FH} = $fh;
|
$hash->{FH} = $fh;
|
||||||
$hash->{REGEXP} = $a[3];
|
$hash->{REGEXP} = $a[3];
|
||||||
$hash->{FILENAME} = $a[2];
|
$hash->{logfile} = $a[2];
|
||||||
$hash->{CURRENT} = $f;
|
$hash->{currentlogfile} = $f;
|
||||||
$hash->{STATE} = "active";
|
$hash->{STATE} = "active";
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
@ -56,54 +56,6 @@ FileLog_Undef($$)
|
|||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Make a directory and its parent directories if needed.
|
|
||||||
sub
|
|
||||||
HandleArchiving($)
|
|
||||||
{
|
|
||||||
my ($log) = @_;
|
|
||||||
my $ln = $log->{NAME};
|
|
||||||
return if(!$attr{$ln});
|
|
||||||
|
|
||||||
# If there is a command, call that
|
|
||||||
my $cmd = $attr{$ln}{archivecmd};
|
|
||||||
if($cmd) {
|
|
||||||
$cmd =~ s/%/$log->{CURRENT}/g;
|
|
||||||
Log 2, "Archive: calling $cmd";
|
|
||||||
system($cmd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $nra = $attr{$ln}{nrarchive};
|
|
||||||
my $ard = $attr{$ln}{archivedir};
|
|
||||||
return if(!defined($nra));
|
|
||||||
|
|
||||||
# If nrarchive is set, then check the last files:
|
|
||||||
# Get a list of files:
|
|
||||||
|
|
||||||
my ($dir, $file);
|
|
||||||
if($log->{FILENAME} =~ m,^(.+)/([^/]+)$,) {
|
|
||||||
($dir, $file) = ($1, $2);
|
|
||||||
} else {
|
|
||||||
($dir, $file) = (".", $log->{FILENAME});
|
|
||||||
}
|
|
||||||
|
|
||||||
$file =~ s/%./.+/g;
|
|
||||||
return if(!opendir(DH, $dir));
|
|
||||||
my @files = sort grep {/^$file$/} readdir(DH);
|
|
||||||
closedir(DH);
|
|
||||||
|
|
||||||
my $max = int(@files)-$nra;
|
|
||||||
for(my $i = 0; $i < $max; $i++) {
|
|
||||||
if($ard) {
|
|
||||||
Log 2, "Moving $files[$i] to $ard";
|
|
||||||
rename("$dir/$files[$i]", "$ard/$files[$i]");
|
|
||||||
} else {
|
|
||||||
Log 2, "Deleting $files[$i]";
|
|
||||||
unlink("$dir/$files[$i]");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub
|
sub
|
||||||
FileLog_Log($$)
|
FileLog_Log($$)
|
||||||
@ -127,9 +79,9 @@ FileLog_Log($$)
|
|||||||
|
|
||||||
my $fh = $log->{FH};
|
my $fh = $log->{FH};
|
||||||
my @t = localtime;
|
my @t = localtime;
|
||||||
my $cn = ResolveDateWildcards($log->{FILENAME}, @t);
|
my $cn = ResolveDateWildcards($log->{logfile}, @t);
|
||||||
|
|
||||||
if($cn ne $log->{CURRENT}) { # New logfile
|
if($cn ne $log->{currentlogfile}) { # New logfile
|
||||||
$fh->close();
|
$fh->close();
|
||||||
HandleArchiving($log);
|
HandleArchiving($log);
|
||||||
$fh = new IO::File ">>$cn";
|
$fh = new IO::File ">>$cn";
|
||||||
@ -137,7 +89,7 @@ FileLog_Log($$)
|
|||||||
Log(0, "Can't open $cn");
|
Log(0, "Can't open $cn");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$log->{CURRENT} = $cn;
|
$log->{currentlogfile} = $cn;
|
||||||
$log->{FH} = $fh;
|
$log->{FH} = $fh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,3 +127,7 @@
|
|||||||
- EM: added setTime, reset
|
- EM: added setTime, reset
|
||||||
- docs/fritzbox.html. Note: The fb_fhem_0.1.tar.gz won't be part of CVS
|
- docs/fritzbox.html. Note: The fb_fhem_0.1.tar.gz won't be part of CVS
|
||||||
as it contains largee binaries (swapfile, perl mipsel executable, etc).
|
as it contains largee binaries (swapfile, perl mipsel executable, etc).
|
||||||
|
|
||||||
|
- Rudi Mon Aug 6 20:15:00 MEST 2007
|
||||||
|
- archiving added to the main logs.
|
||||||
|
NOTE: The FileLog filename (INT attribute) is now also called logfile.
|
||||||
|
@ -2,7 +2,7 @@ BINDIR=/usr/local/bin
|
|||||||
MODDIR=/usr/local/lib
|
MODDIR=/usr/local/lib
|
||||||
|
|
||||||
VERS=4.0
|
VERS=4.0
|
||||||
DATE=2007-04-14
|
DATE=2007-08-05
|
||||||
DIR=fhem-$(VERS)
|
DIR=fhem-$(VERS)
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
59
fhem/fhem.pl
59
fhem/fhem.pl
@ -47,6 +47,7 @@ sub CommandChain($$);
|
|||||||
sub DoClose($);
|
sub DoClose($);
|
||||||
sub GetLogLevel(@);
|
sub GetLogLevel(@);
|
||||||
sub HandleTimeout();
|
sub HandleTimeout();
|
||||||
|
sub HandleArchiving($);
|
||||||
sub IOWrite($@);
|
sub IOWrite($@);
|
||||||
sub InternalTimer($$$);
|
sub InternalTimer($$$);
|
||||||
sub Log($$);
|
sub Log($$);
|
||||||
@ -133,13 +134,14 @@ my %intAt; # Internal at timer hash.
|
|||||||
my $intAtCnt=0;
|
my $intAtCnt=0;
|
||||||
my $reread_active = 0;
|
my $reread_active = 0;
|
||||||
my $AttrList = "room comment";
|
my $AttrList = "room comment";
|
||||||
my $cvsid = '$Id: fhem.pl,v 1.22 2007-08-05 09:48:26 rudolfkoenig Exp $';
|
my $cvsid = '$Id: fhem.pl,v 1.23 2007-08-06 18:17:28 rudolfkoenig Exp $';
|
||||||
|
|
||||||
$init_done = 0;
|
$init_done = 0;
|
||||||
|
|
||||||
$modules{_internal_}{ORDER} = -1;
|
$modules{_internal_}{ORDER} = -1;
|
||||||
$modules{_internal_}{AttrList} = "configfile logfile lastinclude modpath " .
|
$modules{_internal_}{AttrList} = "configfile logfile lastinclude modpath " .
|
||||||
"pidfilename port statefile title userattr " .
|
"pidfilename port statefile title userattr " .
|
||||||
|
"nrarchive archivedir archivecmd " .
|
||||||
"verbose:1,2,3,4,5 version";
|
"verbose:1,2,3,4,5 version";
|
||||||
|
|
||||||
|
|
||||||
@ -577,6 +579,10 @@ OpenLogfile($)
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
$defs{global}{currentlogfile} = $param;
|
||||||
|
$defs{global}{logfile} = $attr{global}{logfile};
|
||||||
|
HandleArchiving($defs{global});
|
||||||
|
|
||||||
open(LOG, ">>$currlogfile") || return("Can't open $currlogfile: $!");
|
open(LOG, ">>$currlogfile") || return("Can't open $currlogfile: $!");
|
||||||
# Redirect stdin/stderr
|
# Redirect stdin/stderr
|
||||||
|
|
||||||
@ -1527,6 +1533,7 @@ ResolveDateWildcards($@)
|
|||||||
return $f if(!$f);
|
return $f if(!$f);
|
||||||
return $f if($f !~ m/%/); # Be fast if there is no wildcard
|
return $f if($f !~ m/%/); # Be fast if there is no wildcard
|
||||||
|
|
||||||
|
my $S = sprintf("%02d", $t[0]); $f =~ s/%S/$S/g;
|
||||||
my $M = sprintf("%02d", $t[1]); $f =~ s/%M/$M/g;
|
my $M = sprintf("%02d", $t[1]); $f =~ s/%M/$M/g;
|
||||||
my $H = sprintf("%02d", $t[2]); $f =~ s/%H/$H/g;
|
my $H = sprintf("%02d", $t[2]); $f =~ s/%H/$H/g;
|
||||||
my $d = sprintf("%02d", $t[3]); $f =~ s/%d/$d/g;
|
my $d = sprintf("%02d", $t[3]); $f =~ s/%d/$d/g;
|
||||||
@ -1643,9 +1650,59 @@ doGlobalDef($)
|
|||||||
$defs{global}{TYPE} = "_internal_";
|
$defs{global}{TYPE} = "_internal_";
|
||||||
$defs{global}{STATE} = "<no definition>";
|
$defs{global}{STATE} = "<no definition>";
|
||||||
$defs{global}{DEF} = "<no definition>";
|
$defs{global}{DEF} = "<no definition>";
|
||||||
|
$defs{global}{NAME} = "global";
|
||||||
|
|
||||||
CommandAttr(undef, "global verbose 3");
|
CommandAttr(undef, "global verbose 3");
|
||||||
CommandAttr(undef, "global configfile $arg");
|
CommandAttr(undef, "global configfile $arg");
|
||||||
CommandAttr(undef, "global logfile -");
|
CommandAttr(undef, "global logfile -");
|
||||||
CommandAttr(undef, "global version =VERS= from =DATE= ($cvsid)");
|
CommandAttr(undef, "global version =VERS= from =DATE= ($cvsid)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Make a directory and its parent directories if needed.
|
||||||
|
sub
|
||||||
|
HandleArchiving($)
|
||||||
|
{
|
||||||
|
my ($log) = @_;
|
||||||
|
my $ln = $log->{NAME};
|
||||||
|
return if(!$attr{$ln});
|
||||||
|
|
||||||
|
# If there is a command, call that
|
||||||
|
my $cmd = $attr{$ln}{archivecmd};
|
||||||
|
if($cmd) {
|
||||||
|
$cmd =~ s/%/$log->{currentlogfile}/g;
|
||||||
|
Log 2, "Archive: calling $cmd";
|
||||||
|
system($cmd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $nra = $attr{$ln}{nrarchive};
|
||||||
|
my $ard = $attr{$ln}{archivedir};
|
||||||
|
return if(!defined($nra));
|
||||||
|
|
||||||
|
# If nrarchive is set, then check the last files:
|
||||||
|
# Get a list of files:
|
||||||
|
|
||||||
|
my ($dir, $file);
|
||||||
|
if($log->{logfile} =~ m,^(.+)/([^/]+)$,) {
|
||||||
|
($dir, $file) = ($1, $2);
|
||||||
|
} else {
|
||||||
|
($dir, $file) = (".", $log->{logfile});
|
||||||
|
}
|
||||||
|
|
||||||
|
$file =~ s/%./.+/g;
|
||||||
|
return if(!opendir(DH, $dir));
|
||||||
|
my @files = sort grep {/^$file$/} readdir(DH);
|
||||||
|
closedir(DH);
|
||||||
|
|
||||||
|
my $max = int(@files)-$nra;
|
||||||
|
for(my $i = 0; $i < $max; $i++) {
|
||||||
|
if($ard) {
|
||||||
|
Log 2, "Moving $files[$i] to $ard";
|
||||||
|
rename("$dir/$files[$i]", "$ard/$files[$i]");
|
||||||
|
} else {
|
||||||
|
Log 2, "Deleting $files[$i]";
|
||||||
|
unlink("$dir/$files[$i]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#Sun Aug 5 11:41:52 2007
|
#Mon Aug 6 19:30:33 2007
|
||||||
setstate FHZ fhtbuf: 1c
|
setstate FHZ fhtbuf: 1c
|
||||||
setstate FHZ 2006-02-12 14:03:39 fhtbuf 23
|
setstate FHZ 2006-02-12 14:03:39 fhtbuf 23
|
||||||
setstate FHZ 2006-03-26 08:47:36 init2 deadbeefdeadbe
|
setstate FHZ 2006-03-26 08:47:36 init2 deadbeefdeadbe
|
||||||
@ -69,10 +69,10 @@ setstate wz 2006-03-26 08:50:36 wed-from1 06:00
|
|||||||
setstate wz 2006-03-26 08:50:36 wed-to1 23:00
|
setstate wz 2006-03-26 08:50:36 wed-to1 23:00
|
||||||
setstate wz 2006-03-26 08:52:31 windowopen-temp 12.0 (Celsius)
|
setstate wz 2006-03-26 08:52:31 windowopen-temp 12.0 (Celsius)
|
||||||
setstate x 13.66 0.0 30 13.62 15.09 -0.2 2.8
|
setstate x 13.66 0.0 30 13.62 15.09 -0.2 2.8
|
||||||
setstate x 2007-08-05 11:41:50 Is 0.0
|
setstate x 2007-08-06 19:27:55 Is 0.0
|
||||||
setstate x 2007-08-05 11:41:50 Temp 30
|
setstate x 2007-08-06 19:27:55 Temp 30
|
||||||
setstate x 2007-08-05 11:41:50 Vs 13.66
|
setstate x 2007-08-06 19:27:55 Vs 13.66
|
||||||
setstate x 2007-08-05 11:41:50 maxI 2.8
|
setstate x 2007-08-06 19:27:55 maxI 2.8
|
||||||
setstate x 2007-08-05 11:41:50 maxV 15.09
|
setstate x 2007-08-06 19:27:55 maxV 15.09
|
||||||
setstate x 2007-08-05 11:41:50 minI -0.2
|
setstate x 2007-08-06 19:27:55 minI -0.2
|
||||||
setstate x 2007-08-05 11:41:50 minV 13.62
|
setstate x 2007-08-06 19:27:55 minV 13.62
|
||||||
|
Loading…
x
Reference in New Issue
Block a user