Hallo Zusammen,
eigentlich um spontanen Neustarts leichter auf die Schliche zu kommen habe ich die Logfile-Frequenz umgestellt.
Meine Logfile Definition sieht jetzt so aus:
Internals:
DEF ./log/fhem-%Y-%m-%d-%H.log fakelog
FD 114
FUUID 5c7add50-f33f...
NAME Logfile
NR 22
NTFY_ORDER 50-Logfile
REGEXP fakelog
STATE active
TYPE FileLog
currentlogfile ./log/fhem-2020-07-16-19.log
logfile ./log/fhem-%Y-%m-%d-%H.log
Dazu passend habe ich den Eintrag in global auch geändert. (Auszug)
Internals:
DEF no definition
FD 3
NAME global
NR 1
STATE no definition
TYPE Global
currentlogfile ./log/fhem-2020-07-16-20.log
init_errors
logfile ./log/fhem-%Y-%m-%d-%H.log
Attributes:
autoload_undefined_devices 1
autosave 0
configfile fhem.cfg
logfile ./log/fhem-%Y-%m-%d-%H.log
und jetzt sieht man evtl. auch schon meine Frage ;-) Warum wird das "currentlogfile" im Logfile nicht aktuallisiert es bleibt "hängen"? Bei global steht das richtige drinnen und wird auch aktuallisiert...
Hab ich was vergessen?
Zitat von: Parador am 16 Juli 2020, 20:42:05
Hab ich was vergessen?
FHEM einmal neu starten
ok, das wär zu einfach... ;-) Probier ich kann dann, kann aber erst später sagen ob es klappt ;-)
Dann aber gleich die nächste Frage...
Versuche ja den Neustarts auf die Schliche zu kommen. Habe mir deshalb eine Hilfe gebastelt wo ich auch noch eine Hilfestellung bräuchte:
+*00:20:00 {
my $clf = InternalVal("Logfile","currentlogfile","none");
my $actualLinesNr = qx (wc -l $clf);
my $myverboselevel = AttrVal("global","verbose",0);
my $loglinelimit = 34;
if ($myverboselevel < 3 ) { my $loglinelimit = 15; }
if ($myverboselevel > 4 ) { my $loglinelimit = 35000; }
$actualLinesNr =~ s,^(\d+).*,$1,g;
my $delta = $actualLinesNr - ReadingsVal("Logfile","lastKnownLinesInTheFile",0);
fhem"set TelegramBot2 message FHEM Logfile kontrollieren, $delta Zeilen mehr! Loglinelimit: $loglinelimit Verboselevel: $myverboselevel" if ($delta > $loglinelimit );
fhem"setreading Logfile lastKnownLinesInTheFile $actualLinesNr";
}
ich würde gerne das "loglinelimit" dynamisch setzen, d.h. in Abhängigkeit des verboselevels...
Normal habe ich verbose "2" und im Moment "5".
Was hat nicht geklappt, weil "hat nicht geklappt" sagt/hilft nix...
Aber du solltest die "my" bei den auskommentierten Zeilen löschen...
Die Variable ist doch schon "angelegt"...
Gruß, Joachim
Hallo Joachim und danke,
habe jetzt mal die my's entfernt, hast Recht die gibts ja schon.
Und mit "hat nicht geklappt" ist leider wirklich so, habe keinen Logeintrag oder Fehler gehabt, die beiden Zeilen wurden einfach "ignoriert" (also auch ohne die ##)
;-)
VG
Und klappt es jetzt!?
Bzw. wurde es verm. nicht ignoriert und gab keinen Fehler (verm.) weil verbose ist Standard auf 3. Diesen "Fall" und auch verbose=4 "umgehst" du aber ja...
Wollte ich eben schon anmerken aber es kann ja sein, dass du 0-4 die 15 haben willst und für größer 4 dann 35000.
EDIT: das erste if ist eigentlich nutzlos... ;)
Gruß, Joachim
Habe leider ein doppeltes Nein...
der Neustart, hat nichts an der Tatsache geändert, dass bei Logfile das currentfile hängenbleibt, dort steht jetzt um 22:38 noch das 21 Uhr logfile.
Und die erste Meldung die ich per Telegram erhalten habe teilte mir ein verboselevel 0 mit, obwohl es aktuell auf 5 steht... - und vorher hatte ich verbose = 2, was vermutlich an meinem Versuch mit ReadingsVal() liegt, ist wohl eher ein AttrVal() - habe ich korrigiert
achja und für verbose = 3 habe ich "34" ;-) (frisch hinterlegt)
verbose ist kein Reading sondern ein Attribut
EDIT: oops, schon gerade von Parador geschrieben
Aha...
Äh geht es nun!?
Und ja ist ein Attribut...
Besser posten wie es jetzt aussieht, wenn du noch fragen hast...
...weil im Original-Post ist aktuell ja nur die 34 geändert...
Andere Frage: was willst du tun!?
Hab jetzt nicht den Code gelesen (hab nur Handy grad)...
verbose kann aber auf Device-Ebene auch eingestellt werden... ;)
Gruß, Joachim
Vielleicht etwas nachzudenken: euch ist bewusst, dass eine neue Logfile, passend zu Wildcards in dem logfile Attribut, erst angelegt wird (und das Internal entspr. gesetzt wird), wenn etwas tatsächlich in der Log geschrieben werden muss?
Wenn tagelang nichts geloggt werden muss, hat currentlogfile immer noch den Wert vom letzten Log Eintrag.
Hallo amenomade,
klar wird nur ein Logfile angelegt wenn es etwas zum reinschreiben gibt ;-) Mit verbose 5 hatte ich um 22:38 Uhr rund 30000 Zeilen im Logfiel für 22 Uhr. Den ersten Eintrag hatte ich um 22:00:00. Ich habe eben nur festgestellt, das der Vermerk bei currentlogfile in Logfile nicht dauernd gesetzt wird. Aktuell 06:45 Uhr steht er bei ./log/fhem-2020-07-17-00.log. Damit greift mein Auswerteversuch (nicht mehr).
Habe den Post oben bearbeitet wie es aktuell aussieht.
Die Abfrage des verboselimits funktioniert, aber es wird nicht mehr ausgelöst, weil das Logfile ja "gleichbleibt" und damit keine Änderung stattfindet.
Es macht grundsätzlich wenig Sinn, in FHEM Aktionen ausführen zu wollen, die auf die Veränderung von INTERNAL beruhen.
Internals sind keine "alternativen readings".
Hallo betateilchen,
ok, verstehe ich, aber wie bekomme ich dann das aktuelle Protokoll zu fassen?
Nun um das noch ein wenig zu verfeinern: Ich habe auch das Attribut "nrarchive" auf 12 gesetzt... Auch das wird ignoriert...
habe jetzt aktuell 31 der stündlichen Logfiles ...
Hi,
Was mich auffällt:
ZitatInternals:
DEF ./log/fhem-%Y-%m-%d-%H.log fakelog
FD 114
FUUID 5c7add50-f33f...
ZitatInternals:
DEF ./log/fhem-%Y-%m.log fakelog
FD 8
FUUID 5c5f294e-f33f-520c-6dc0-60bc4dc205e3da1a
NAME Logfile
Wozu ist die Leerzeile in Zeile 2 ? Es gab Fälle da störte sowas den Modulfrieden...
Gruß Otto
Hey das hab ich gar nicht wahrgenommen, gleich geändert, werde wieder berichten - Danke!
=>: Damit klappt jetzt die Anzahl der Logfiles wieder!
Leider ist das "currentlogfile" nur einmal weitergesprungen (nach Änderung von gestern um 21:48 Uhr) und dann wieder stehen geblieben: "./log/fhem-2020-07-21-00.log"
Nö, die Anzahl klappt doch nicht dauerhaft.. habe schon wieder 27 Logfiles statt nur 12
Nur so zwischendurch:
Ich habe vor ein paar Tagen auf ./log/fhem-%Y-%m-%d-%H.log fakelog umgestellt.
Ich kann das "unklares Verhalten" komplett bestätigen wenn man mit stündlichen Logfiles fährt.
Ich werde mal versuchen eine Reproduzierbarkeit herzustellen, vielleicht kann dann mal jemand in den Code schauen. ;)
Gruß Otto