====== 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