====== Logging ====== Fhem kann von verschiedenen Geräten und Modulen loggen. Mit dem Modul ''autocreate'' wird für jedes neu definierte Geräte eine Logdatei erstellt. ===== Loglevel ===== Loglevel werden wie folgt gesetzt. attr global verbose Folgende Loglevel gibt es (Level "3" ist der Default): 0 - Server start/stop 1 - Fehlermeldungen oder unbekannte Pakete 2 - bedeutende Ereigbisse/Alarme **3 - ausgesendete Kommandos werden gelogged** 4 - von den einzelnen Geräten empfangene Daten 5 - Fehlersuche Welcher Loglevel gesetzt ist, sieht man in den Globalattributen list global ===== Loggen in Dateien ===== Das Logverzeichnis befindet sich unter ''/opt/fhem/log''. Logdateien werden nach dem Schema -.log erstellt. Man kann den Namen in fhem ändern und diesem auch div. Variablen übergeben. Somit kann man auch eine Log-Datei erstellen, welche nach jedem Jahr oder jedem Monat neu erstellt. Beispiele: * Loggerät mit Jahr: \\ define FileLog /opt/fhem/log/-%Y.log * Loggerät mit Jahr und Monat: \\ define FileLog /opt/fhem/log/-%Y-%m.log ===== Loggen in Datenbank ===== Weiterhin kann fhem auch in eine Datenbank loggen. Dies ist z.B. beim anlegen von [[hausautomatisation:fhem:plot-grafiken|Plots]] ein Vorteil, da die Daten dann schneller geholt werden können. Damit man in eine Datenbank schreiben kann, muss zunächst diese angelegt und ein Verbindung dahin hergestellt werden. Siehe dazu [[hausautomatisation:fhem:logging#dblog|DbLog]]. Wenn alles vorbereitet ist, kann man die Loggeräte wie folgt anlegen. * Loggerät: \\ define FileLog /opt/fhem/log/-%Y.log ===== DbLog ===== Um in eine Datenbank zu loggen, müssen folgende Schritte beachtet werden. - Datenbankserver installieren und Datenbank anlegen. \\ apt-get install mysql-server mysql-client libdbd-mysql libdbi1 libdbd-mysql-perl mysql -uroot -p < /opt/fhem/contrib/dblog/db_create_mysql.sql \\ Bei einem Raspberry Pi sollte der Datenbankserver noch angepasst werden. \\ service mysql stop mv /etc/mysql/my.cnf /etc/mysql/my.cnf-bakup cp /usr/share/doc/mysql-server-5.5/examples/my-small.cnf /etc/mysql/my.cnf service mysql start - Verbindungdatei erstellen und konfigurieren. \\ cp contrib/dblog/db.conf /opt/fhem/ \\ Danach die Datei für den jew. Datenbankserver anpassen und speichern. - Loggerät anlegen und configurieren \\ define DbLog ./db.conf .*:.* \\ Im neu erstellten DbLog sollte nun als State "connected" stehen. ==== Log-Einträge beschränken ==== Das oben angelegte "DbLog" logt alles in die DB (.*:.* | :). Dadurch entstehen viele DB-Einträge, welcher die Datenbank recht schnell wachsen lassen. Dies kann eingeschränkt werden in dem man die Wildcards auf bestimmte Geräte oder Readings anpasst. Beispiel -> alle Geräte aber nur Werte für Temperatur, Ventilpositionen und Luftfeuchtigkeit (Quelle: [[http://www.fhemwiki.de]]): .*:(temperature|valveposition|humidity).* Man kann aber auch die einzelnen Geräte anweisen nur bestimmte Werte zu loggen. Beispiel (Quelle: [[http://www.fhemwiki.de]]): define EG_Balkon GPIO4 BUSMASTER attr EG_Balkon DbLogExclude failures,T,85 # logge keine "failures", "T"-Werte und "85"-Werte (default-Werte, wenn keine Temperatur gelesen werden kann) attr EG_Balkon event-on-change-reading state # logge nur, wenn sich ein Wert ändert (wenn sich die Temperatur nicht ändert, logge das nicht) attr EG_Balkon event-min-interval state:900 # logge spätestens alle 900sec = 15min attr EG_Balkon event-on-update-reading .* # logge alle Werte, die aktualisiert werden attr <1-Wire-Device vom Typ OWTHERM oder OWSWITCH> DbLogExclude data.* # verhindert das Logging der state-Eintragungen