FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Parador am 16 Juli 2020, 20:42:05

Titel: Fhem Logfile
Beitrag von: Parador am 16 Juli 2020, 20:42:05
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?
Titel: Antw:Fhem Logfile
Beitrag von: betateilchen am 16 Juli 2020, 21:07:51
Zitat von: Parador am 16 Juli 2020, 20:42:05
Hab ich was vergessen?

FHEM einmal neu starten
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 16 Juli 2020, 21:36:40
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".
Titel: Antw:Fhem Logfile
Beitrag von: MadMax-FHEM am 16 Juli 2020, 21:46:04
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
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 16 Juli 2020, 21:52:31
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
Titel: Antw:Fhem Logfile
Beitrag von: MadMax-FHEM am 16 Juli 2020, 22:08:25
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
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 16 Juli 2020, 22:42:42
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)
Titel: Antw:Fhem Logfile
Beitrag von: amenomade am 16 Juli 2020, 22:57:33
verbose ist kein Reading sondern ein Attribut
EDIT: oops, schon gerade von Parador geschrieben
Titel: Antw:Fhem Logfile
Beitrag von: MadMax-FHEM am 16 Juli 2020, 22:58:42
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
Titel: Antw:Fhem Logfile
Beitrag von: amenomade am 16 Juli 2020, 23:11:34
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.

Titel: Antw:Fhem Logfile
Beitrag von: Parador am 17 Juli 2020, 06:47:39
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.
Titel: Antw:Fhem Logfile
Beitrag von: betateilchen am 17 Juli 2020, 09:23:21
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".
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 17 Juli 2020, 13:36:27
Hallo betateilchen,
ok, verstehe ich, aber wie bekomme ich dann das aktuelle Protokoll zu fassen?
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 20 Juli 2020, 19:36:31
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 ...
Titel: Antw:Fhem Logfile
Beitrag von: Otto123 am 20 Juli 2020, 20:01:50
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
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 20 Juli 2020, 21:48:11
Hey das hab ich gar nicht wahrgenommen, gleich geändert, werde wieder berichten - Danke!
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 21 Juli 2020, 06:56:26
=>: 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"
Titel: Antw:Fhem Logfile
Beitrag von: Parador am 21 Juli 2020, 15:48:44
Nö, die Anzahl klappt doch nicht dauerhaft.. habe schon wieder 27 Logfiles statt nur 12
Titel: Antw:Fhem Logfile
Beitrag von: Otto123 am 24 Juli 2020, 23:06:16
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