Benachrichtigung, wenn Logfile bestimmte Anzahl Zeilen überschreitet

Begonnen von cotecmania, 27 Juli 2016, 12:49:53

Vorheriges Thema - Nächstes Thema

cotecmania

Hallo,

ist es möglich zu erkennen, wenn das Tageslogfile eine bestimmte Zeilenanzahl überschreitet ?
Ich würde dann gerne eine email generieren ...

Gruss
Joe
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

Hans Franz

{my $lf = InternalVal('global','currentlogfile','');;`grep  -c '.*' $lf`}

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

cotecmania

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
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

betateilchen

#3
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;; }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

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.

StephanFHEM

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


rudolfkoenig

Habs gefixt.

Wuesste trotzdem gerne, welches konkrete Problem damit geloest wird.

StephanFHEM

#7
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!