FileLogConvert: Unterschied zwischen den Versionen

Aus FHEMWiki
(cat)
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 34: Zeile 34:


  svn checkout https://svn.fhem.de/fhem/trunk/fhem/contrib/ contrib
  svn checkout https://svn.fhem.de/fhem/trunk/fhem/contrib/ contrib
Das neue Modul muss in fhem geladen sein:
  reload 98_FileLogConvert.pm


dann kann ein FileLogConvert-Device angelegt werden  
dann kann ein FileLogConvert-Device angelegt werden  
Zeile 51: Zeile 54:


=== Events unterdrücken ===
=== Events unterdrücken ===
wenn man bei erstellung des DbLog-Devices ein  
wenn man bei Erstellung des DbLog-Devices ein  
  attr .* DbLogExclude .*
  attr .* DbLogExclude .*
absetzt, werden keine Events geloggt.  
absetzt, werden keine Events geloggt.  

Aktuelle Version vom 12. April 2024, 12:56 Uhr


FileLogConvert
Zweck / Funktion
einlesen von Filelogs in eine logdb
Allgemein
Typ Hilfsmodul
Details
Dokumentation EN / DE
Support (Forum) FHEM
Modulname 98_FileLogConvert.pm
Ersteller DeeSPe
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!




Kann dazu verwendet werden, um FileLogs in eine DbLog-Datenbank einzulesen.

Vorbereitung

Zuerst brauchen wir ein DbLog-Device:

DbLog-Device erstellen

dazu könnte ein DbRep-Device helfen:

DbRep-Device erstellen


Wenn das soweit erledigt ist, muss das FileLogConvert-Modul aus contrib nach FHEM kopiert werden:

cp /opt/fhem/contrib/98_FileLogConvert.pm /opt/fhem/FHEM

Wenn die Datei nicht vorhanden ist, muss ein update von contrib vorgenommen werden:

svn checkout https://svn.fhem.de/fhem/trunk/fhem/contrib/ contrib

Das neue Modul muss in fhem geladen sein:

 reload 98_FileLogConvert.pm

dann kann ein FileLogConvert-Device angelegt werden

define flc FileLogConvert <DbLogDevice>

Arbeiten mit dem FileLogConvert-Device

nun können mit

set flc import2DbLog <Filelog-Dateiname.log> 

die logdateien importiert werden


Tipps und Tricks

Events unterdrücken

wenn man bei Erstellung des DbLog-Devices ein

attr .* DbLogExclude .*

absetzt, werden keine Events geloggt. Dadurch kann man hinterher die Zeilen der Datei

wc -l Dateiname

mit den importierten Zeilen

Reading lines-imported

mit den in der Datenbank vorhandenen Zeilen

sqlite3 db.db
select count(*) from history; 

vergleichen. Der Count-Befehl gibt die totale anzahl an Zeilen an, so dass hier ggf. eine Verrechnung mit den vorher in der Datenbank vorhandenen Zeilen notwendig ist. Das ganze funktioniert natürlich nur, wenn man in der Zwischenzeit keine neuen Logeinträge schreiben lässt (durch DbLog). Abgesehen davon erhöht das ganze noch die Stabilität und Konsistenz der Datenbank

Log-Dateien splitten

Wenn man größere Logdateien hat, dauert der import unter umständen sehr lange. Daher besteht die Möglichkeit, die Logdateien in kleinere Stücke zu unterteilen, damit man z.B. zwischendurch unterbrechen kann:

split -C 5m --numeric-suffixes input-file output-prefix

Blöderweise kann man nur Dateien importieren, die mit .log enden. Deshalb muss man noch eine kleine verrenkung machen: