Hallo,
ist es möglich zu erkennen, wenn das Tageslogfile eine bestimmte Zeilenanzahl überschreitet ?
Ich würde dann gerne eine email generieren ...
Gruss
Joe
{my $lf = InternalVal('global','currentlogfile','');;`grep -c '.*' $lf`}
Gruß
Hans
Hi,
Danke, hat funktioniert !
Hier der fertige DEF fuer ein AT mit Emailversand :
*13:00:00 { my $logfile = InternalVal('global','currentlogfile',''); my $ctr = `grep -c '.*' $logfile`; $ctr =~ s/\n|\r//g; if ($ctr > 100) {SendMail('fritz@klein.de', 'FHEM Logfile hat zu viele Einträge', 'Zeilenanzahl Logfile: '.$ctr);}}
Gruss
Joe
alternativ:
sed $= -n /path/file
oder auch:
wc -l /path/file
define test at *13:00 { no warnings "numeric";; \
my $f = InternalVal('global','currentlogfile','');; \
$f = qx(wc -l $f)+0;; \
SendMail(...bla...) unless $f < 100;; }
Habe FileLog ein eventOnThreshold Attribut spendiert:
ZitatIf set (to a nonzero number), the event linesInTheFile will be generated, if the lines in the file is a multiple of the set number. Note: the counter is only correct for files created after this feature was implemented. A FHEM crash or kill will falsify the counter.
hallo,
leider hab ich bei mir das optische "Problem", dass nach einem set .. clear im Logfile zwar das Logfile geleert wird aber leider nicht die "LinesInTheFile" angepasst werden. Das müsste eigentlich doch auch wieder auf Null springen. Kann man das irgendwie auf den aktuellen/richtigen Wert bringen?
Grüße
Stephan
Habs gefixt.
Wuesste trotzdem gerne, welches konkrete Problem damit geloest wird.
vielen Dank! ehrlich gesagt noch gar kein Problem. Ich nutze Lines in File für mich nur in der WEB-Oberfläche um abzuschätzen, ob ich die Logs mal wieder leeren sollte.
Das könnte man natürlich mit ner DOIF automatisieren -> wenn über 10000 Lines dann set ...clear... . oder ein AT immer Nachts alle Logs checken lassen...
Aber muss erst mal viele andere Dinge finalisieren:-)
edit: übrigens meine absolute Hochachtung vor diesem genialen Stück Software!