Irgendwie verstehe ich es nicht. Das Ziel ist ALLE logs, pfade zu ändern.
Unter global gibt es ja :
attr global logfile /opt/fhem/log/fhem-%Y-%m-%d.log
ändern würde ich das so:
attr global logfile /mein_neuer_pfad/fhem-%Y-%m-%d.log
oder gar nicht ändern und NUR das attr logdir setzen:
attr global logfile /opt/fhem/log/fhem-%Y-%m-%d.log
attr global logdir /mein_neuer_pfad/fhem-%Y-%m-%d.log
Das anschliesend noch das Logfile selbst angepasst werden muss ist klar:
defmod Logfile FileLog /mein_neuer_pfad/fhem-%Y-%m-%d.log fakelog
Die Logs aller anderen devices schnallen das dann??
Und zuguter letzt noch:
ZitatFalls gesetzt, wird %L in dem logfile Attribut (oder in der Dateinamen Spezifikation des FileLog Moduls) durch den Wert des Attributes ersetzt. Achtung: ändern des Wertes bewirkt nicht das Verschieben bereits erstellter Dateien, und kann zu diversen Problemen führen.
BITTE kann mir das jemand erklären.
LG
Tom
Anstatt FHEM .. versuche es auf Systemebene mit Symlinks ...
Zitat von: tomspatz am 26 Juli 2018, 18:50:17
Und zuguter letzt noch:
BITTE kann mir das jemand erklären.
Nichts leichter als das.
Wenn Du das globale Attribut logdir setzt
attr global logdir ./log
kannst Du im DEFINE eines Log-devices einfach schreiben
define Logfile FileLog %L/fhem-%d.log fakelog
und das erzeugt folgendes Ergebnis (man achte auf das INTERNAL currentlogfile)
Internals:
CFGFN
DEF %L/fhem-%d.log fakelog
NAME Logfile
NR 82
NTFY_ORDER 50-Logfile
REGEXP fakelog
STATE active
TYPE FileLog
currentlogfile ./log/fhem-26.log
logfile %L/fhem-%d.log
READINGS:
2018-07-26 00:00:02 linesInTheFile 0
Attributes:
group 90 System
nrarchive 3
room 98 Logfiles
betateilchen, Du warst schneller.
Ich hatte es fast genauso fertig, aber da ich von Haus aus faul bin, wuerde ich den Slash zwischen Pfad und Dateiname
im logdir-Attribut unterbringen, also
attr global logdir ./log/
define Logfile FileLog %Lfhem-%d.log fakelog
Und habe den Hinweis dazugeschrieben, dass die Umstellung mittels der GUI im laufenden Betrieb wohl nicht unfallfrei,
also nur mit Verlust von Logdaten hinzukriegen ist.
Jedenfalls muss das "%L" in allen FileLog- und in der global logfile-Definition anstelle des Pfades eingetragen werden.
Gruss Helmut
OK erst mal Dankeschön, ich probiere es zu interpretieren.
attr global logdir /mein_neuer_pfad_absolut/
attr global logfile L%fhem-%Y-%m-%d.log
sowie:
defmod Logfile FileLog L%fhem-%Y-%m-%d.log fakelog
und natürlich ALLE FileLog's die ich selbst gebaut habe.
Was passiert denn mit den FileLogs der vielen devices die automatisch angelegt worden sind während Ihrer Inklusion?
Und wie sieht es dann mit devices die noch NEU dazu kommen aus?
Das die vorhandenen Daten in das neue Verzeichnis von Hand verschoben müssen ist mir bewusst.
LG
Tom
Zitat von: tomspatz am 27 Juli 2018, 09:00:34
Was passiert denn mit den FileLogs der vielen devices die automatisch angelegt worden sind während Ihrer Inklusion?
Und wie sieht es dann mit devices die noch NEU dazu kommen aus?
Hallo Tom,
da ich inzwischen auf DBLog umgestiegen bin, kann ich Dir aktuell zu automatisch angelegten FileLogs nichts sagen,
aber meine habe ich in der Vergangenheit immer selbst anlegen muessen.
Aber sollte es einen Automatismus geben, wird auch der mit an Sicherheit grenzender Wahrscheinlichkeit das
logdir-Attribut auswerten. Probier es aus.
Gruss Helmut
Hi,
aber bitte mit richtigem Copy&Paste
L% -> %L
Gruß Otto
Danke, Otto. Ist immer gut, wenn wenn jemand so aufmerksam liest, wie Du. Das war mir entgangen.
Gruss Helmut
grrrrrr ja auch gesehen allerdings habe ich es so geschrieben und nicht kopiert.
Irgendetwas hakt da allerdings.
attr global logdir /opt/fhem_backup_logs/logs/
attr global logfile %Lfhem-%Y-%m-%d.log
wird auch erkannt
currentlogfile
/opt/fhem_backup_logs/logs/fhem-2018-07-27.log
defmod Logfile FileLog %Lfhem-%Y-%m-%d.log fakelog
currentlogfile
/opt/fhem_backup_logs/logs/fhem-2018-07-27.log
Auch wird das Logfile schon dort geschrieben aber leider nicht angezeigt.
ZitatFür folgende Webadresse wurde keine Webseite gefunden: http://192.168.1.220:8083/fhem/FileLog_logWrapper&dev=Logfile&type=text&file=%Lfhem-%Y-%m-%d.log.
Was fehlt denn da noch ?
LG
Tom
Hallo Tom,
Moment, Du hast ein FileLog mit dem Device-Namen Logfile und demselben Namen wie das globale Logfile angelegt?
Was da passiert, weiss ich nicht, aber mit Sicherheit ist das keine gute Idee.
Ich muss gestehen, auch das ist mir eben entgangen. Das globale Logfile wird mit dem "attr global logfile" schon
hinreichend beschrieben, Dein zusaetzliches "defmod Logfile FileLog" ist ueberfluessig, in diesem speziellen Fall sogar
schaedlich. betateilchen hatte in seinem Beispiel extra "%L/fhem-%d.log" geschrieben um Verwechselungen zu vermeiden.
Gruss Helmut
Helmut ......
natürlich habe ich kein zweites global angelegt.
Inzwischen funktioniert es auch ABER die Lösung für faule:
ZitatIch hatte es fast genauso fertig, aber da ich von Haus aus faul bin, wuerde ich den Slash zwischen Pfad und Dateiname
Funktioniert nicht.
Richtig ist:
attr global backupdir /mein_neuer_pfad
attr global logfile %L/fhem-%Y-%m-%d.log
Im FileLog funktioniert die Variable nicht, dort muss es dann unter DEF heißen:
/mein_neuer_pfad/fhem-%Y-%m-%d.log fakelog
LEIDER werden alle anderen FileLogs nicht berücksichtigt, somit muss man jeden anfassen und dort den Pfad mit der Variablen ändern. Und die alten nicht vergessen zu kopieren.
LG
Tom
Zitat von: tomspatz am 27 Juli 2018, 18:50:59
Inzwischen funktioniert es auch ABER die Lösung für faule:Funktioniert nicht.
Hallo Tom,
Du hast doch selbst geschrieben "Auch wird das Logfile schon dort geschrieben aber leider nicht angezeigt."
Also hat der Teil schon funktioniert; moeglich ist trotzdem ein Problem bei der Anzeige mit dem Web-Interface.
Zitat von: tomspatz am 27 Juli 2018, 18:50:59
Im FileLog funktioniert die Variable nicht, dort muss es dann unter DEF heißen:
/mein_neuer_pfad/fhem-%Y-%m-%d.log fakelog
Komisch, im "list" wurde die Variable richtig ersetzt. Ist es vielleicht ein aehnliches Problem wie mit dem global Logfile?
Wenn das grundsaetzlich nicht funktionierte, waere das Attribut "global logdir" einigermassen ueberfluessig.
Eine sicher auch ueberfluessige Frage dennoch: Du hattest fhem neu gestartet?
Gruss Helmut
ja neu gestartet logo.
Ist doch alles in Butter. Ich habe etwas falscher hineinkopiert.
attr glogal logdir muss absolut sein und mit einem slash am Ende. Somit muss auch wieder ein slash zwischen %L und der DEF.
Sonst funktioniert das nicht. Und im fakelog muss der Pfag auch absolut sein.
attr global logdir /opt/fhem_backup_logs/logs
attr global logfile %L/fhem-%Y-%m-%d.log
/mein_neuer_pfad/fhem-%Y-%m-%d.log fakelog
Was wiederum funktioniert ist:
attr global statefile %L/fhem.save
Schön wäre es wenn neue devices das erkennenwürden RUDI !!
Vielleicht hörst du mich ;)
LG
Tom
Zitat von: tomspatz am 27 Juli 2018, 19:58:45
Somit muss auch wieder ein slash zwischen %L und der DEF.
Sonst funktioniert das nicht.
Dass helmut "faule" Lösung nicht funktioniert, hätte mir ohenhin niemand geglaubt, wenn ich ihm widersprochen hätte.
Gut, dass Du inzwischen selbst draufgekommen bist und das bestätigt hast :)
Zitat von: tomspatz am 27 Juli 2018, 19:58:45
attr glogal logdir muss absolut sein
Nein.
Zitat von: tomspatz am 27 Juli 2018, 19:58:45
Und im fakelog muss der Pfag auch absolut sein.
Nein.
Aber was meinst Du damit?
Zitat von: tomspatz am 27 Juli 2018, 19:58:45
Schön wäre es wenn neue devices das erkennenwürden RUDI !!
ZitatDass helmut "faule" Lösung nicht funktioniert, hätte mir ohenhin niemand geglaubt, wenn ich ihm widersprochen hätte.
HAHAHA
hmmmm bei mir liegt das Verzeichnis außerhalb vom fhem Verzeichnis. und zwar /opt/fhem_backup_logs/backup
Wie soll fhem das dann mitbekommen wenn nicht absolut?
ZitatSchön wäre es wenn neue devices das erkennenwürden RUDI !!
Damit meine ich wenn die Variablen in global gesetzt sind und man jetzt ein neues z.B. z-wave device inkludiert, wird ja auch ein Logfile dazu erzeugt. Wird das dann berücksichtigt oder händisch ändern?
Und "RUDI !!" sollte nur nach Ihm rufen weil er das warscheinlich am besten in der Hand hat. ;)
Zitat von: betateilchen am 28 Juli 2018, 01:07:52
Dass helmut "faule" Lösung nicht funktioniert, hätte mir ohenhin niemand geglaubt, wenn ich ihm widersprochen hätte.
Sie funktioniert ein Stueck weit, naemlich solange Du nicht ueber das Web-Interface auf die Logdaten
zugreifen willst. Dabei greift das offensichtlich nicht auf das Internal currentlogfile zu, sondern substituiert die
Variablen selbst, was fuer diesen Fall schief geht - warum auch immer.
Dabei habe ich gelernt, dass die interne Verarbeitung und das Web-Interface durchaus unterschiedliche Dinge
sein koennen. Sorry, dass ich damit Verwirrung gestiftet habe.
Im Anhang (ausnahmsweise) ein Screenshot auf dem zu sehen ist, dass die Substituierung fuer den Fall
"attr global logdir mein-test-logdir/" inklusive des Schreibens in die Datei intern durchaus erwartungsgemaess
funktioniert.
Gruss Helmut
Zitat von: helmut am 28 Juli 2018, 13:05:37
Sie funktioniert ein Stueck weit
Genau das ist der Punkt: es funktioniert, aber nicht überall.
Ausserdem finde ich den slash zwischen %L und einer dahinter stehenden Angabe durchaus intuitiver :)
Zitat von: tomspatz am 28 Juli 2018, 11:15:08
Damit meine ich wenn die Variablen in global gesetzt sind und man jetzt ein neues z.B. z-wave device inkludiert, wird ja auch ein Logfile dazu erzeugt. Wird das dann berücksichtigt oder händisch ändern?
Wenn Du das entsprechende Attribut "logfile" in Deinem autocreate device entsprechend gesetzt hast, sollte es funktionieren. Ein Blick in die commandref kann oft helfen.
Zitat von: tomspatz am 28 Juli 2018, 11:15:08
bei mir liegt das Verzeichnis außerhalb vom fhem Verzeichnis
Ok, in dem Fall hast Du recht.
Zitat von: tomspatz am 28 Juli 2018, 11:15:08
Und "RUDI !!" sollte nur nach Ihm rufen weil er das warscheinlich am besten in der Hand hat.
Schon klar. Aber Rudi liest die Anfängerfragen höchst selten. Für autocreate ist ein anderer Forumbereich zuständig.
Zitat von: betateilchen am 28 Juli 2018, 13:13:25
Genau das ist der Punkt: es funktioniert, aber nicht überall.
Ausserdem finde ich den slash zwischen %L und einer dahinter stehenden Angabe durchaus intuitiver :)
"nicht ueberall" habe ich akzeptiert, musste ich aber nicht vermuten; denn in der commandref ist es anders beschrieben:
ZitatIf set, the %L attribute in the logfile attribute (or in the FileLog modules file definition) is replaced wth the value of the attribute
Zu diesem Wert gehoert nach meinem Verstaendnis auch der Slash.
Was die Intuition angeht, bin ich geneigt Dir recht zu geben. Lass mich trotzdem faul sein und weiter automatisieren ;-)
Gruss Helmut
Zitat von: helmut am 28 Juli 2018, 13:28:49
Lass mich trotzdem faul sein
Dann nimm DbLog, dann brauchst Du nichtmal mehr das Attribut zu setzen 8)
Bin Habe ich doch laengst :P
Gruss Helmut
Hallo betateilchen, hallo Tom,
morgen frueh steht die Aenderung zur Verfuegung, dann geht's auch auf die faule Tour ;-)
https://forum.fhem.de/index.php/topic,89744.0.html
Gruss Helmut
Zitat von: betateilchen am 28 Juli 2018, 13:13:25
Ausserdem finde ich den slash zwischen %L und einer dahinter stehenden Angabe durchaus intuitiver :)