FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: DL8EI Ralph am 19 April 2023, 12:17:09

Titel: [Nicht nachdenkenswert] Logbuch - formatierung CRLF
Beitrag von: DL8EI Ralph am 19 April 2023, 12:17:09
Hallo,
ich habe ein Logbuch ./log/Filelog_FS20LS3.log FS20LS3_T3T4
mit den Inhalten
(umgekehrte Sortierung)
2023-04-19_11:56:04 FS20LS3_T3T4 off
2023-04-19_11:55:35 FS20LS3_T3T4 off
2023-04-19_11:54:16 FS20LS3_T3T4 on
2023-04-19_11:53:07 FS20LS3_T3T4 off
2023-04-19_11:51:23 FS20LS3_T3T4 on
2023-04-19_11:50:41 FS20LS3_T3T4 off
2023-04-19_11:50:39 FS20LS3_T3T4 on
und möchte aber hinter jedem off einen CRLF-Zeilenabstand haben, nämilich so:

2023-04-19_11:55:35 FS20LS3_T3T4 off
2023-04-19_11:54:16 FS20LS3_T3T4 on

2023-04-19_11:53:07 FS20LS3_T3T4 off
2023-04-19_11:51:23 FS20LS3_T3T4 on

2023-04-19_11:50:41 FS20LS3_T3T4 off
2023-04-19_11:50:39 FS20LS3_T3T4 on

Wie bekommt man das hin?
Ich weiß schon, dass man irgendwie "\r\n" anhängen muss, aber wie?
Titel: Aw: Logbuch - formatierung CRLF
Beitrag von: betateilchen am 19 April 2023, 12:42:03
Warum? Wo willst Du das Ergebnis verwenden?

Das FileLog hat glücklicherweise ein standardisiertes Format.
Deshalb könntest Du überlegen, das Anhängen im Rahmen des Auslesens aus dem FileLog zu erledigen.

Und wieso steht das in den Anfängerfragen und nicht im richtigen Unterforum zu FileLog?
Titel: Aw: Logbuch - formatierung CRLF
Beitrag von: DL8EI Ralph am 19 April 2023, 12:55:10
Zitat von: betateilchen am 19 April 2023, 12:42:03Und wieso steht das in den Anfängerfragen und nicht im richtigen Unterforum zu FileLog?
Weil das dumm von mir war. Möchtest Du es bitte dorthin verschieben?

Ich möchte das nur wegen der Übersichtlichkeit des Lesens.
Derzeit keine maschinelle Auswertung beabsichtigt.
Titel: Aw: Logbuch - formatierung CRLF
Beitrag von: betateilchen am 19 April 2023, 12:59:07
Zitat von: DL8EI Ralph am 19 April 2023, 12:55:10Möchtest Du es bitte dorthin verschieben?

Ich kann das nicht verschieben. Aber Du.
Dafür gibt es einen Button am Ende der Seite.

Zitat von: DL8EI Ralph am 19 April 2023, 12:55:10Ich möchte das nur wegen der Übersichtlichkeit des Lesens.

Ok, das ist kein Grund, wegen dem es sich lohnt, weiter darüber nachzudenken.
Titel: Aw: Logbuch - formatierung CRLF
Beitrag von: DL8EI Ralph am 19 April 2023, 14:11:33
Zitat von: betateilchen am 19 April 2023, 12:59:07Ok, das ist kein Grund, wegen dem es sich lohnt, weiter darüber nachzudenken.
Danke für diese überaus nette Antwort.
Titel: Aw: [Nicht nachdenkenswert] Logbuch - formatierung CRLF
Beitrag von: ch.eick am 22 April 2023, 06:27:30
Moin,
Da das ziemlich speziel ist und man es nicht so oft machen wird hätte ich einen Vorschlag.

Im Win gibt es das Notepad++, dort könntest Du bei Suchen und Ersetzen nach einer Regex suchen und den String mit einem \r\n erweitern.
Das kannst Du auch in Perl mit Regex verwenden.
Ich verwende Perl auch in Devices und habe mir so ein GUI Interface zur DbLog erstellt, was im DOIF im Perl Modus mit uiTable im FHEMWEB bedienbar ist.
Bild 3 zeigt gelb markiert einen Auszug aus der DbLog für Einträge, die ich mit dem Device manuell in die Datenbank geschrieben habe.
Auch dort wird der Report etwas nachformatiert, bevor er angezeigt wird:
$report =~ s/\n/<br>/g;       <<< Linefeed wird zu html break
$report =~ s/\|/ \| /g;       <<< der Spalten Trenner wird davor und danach um ein Blank erweitert
In Deinem Fall würde dann sowas auch gehen:
$report =~ s/\| off/\| off\n/g;   <<< Nach jedem off noch eine neue Zeile einfügen

Ohne DbLog müsstest Du das letzte Log File einlesen und dieses dann bearbeiten, bevor es angezeigt wird. Das ist zwar voll 80er, geht aber auch ;-)

Die zweite Möglichkeit wäre, da es sich ja hier um eine manuelle Kontrolle handet, das ganze mit on/off in einem SVG Diagramm graphisch darzustellen.
Dort könnte man auch gleichzeitig mehrere on/off Devices zeitlich synchrinisiert darstellen, was ich z.B. mit meinem Fensterkontakt (Bild 4) mal gemacht habe. Das SVG kann man natürlich auch schöner machen, aber ich wurde von Grafana überholt ;-)

VG Christian
Titel: Aw: [Nicht nachdenkenswert] Logbuch - formatierung CRLF
Beitrag von: DL8EI Ralph am 28 April 2023, 14:31:43
Habe weiter darüber nachgedacht und mir selber was primitives gebaut:
defmod di_FS20LS1 DOIF ([FS20LS1:"^off"]) ({schrdatei((ReadingsTimestamp("FS20LS1","state","0")." Licht ON\r\n"),'>>/opt/fhem/log/FS20LS1-2023.log')},set X1 on) DOELSE ({schrdatei((ReadingsTimestamp("FS20LS1","state","0")." Licht OFF\r\n\r\n"),'>>/opt/fhem/log/FS20LS1-2023.log')},set X1 off)Dazu braucht es noch einen kleine SUB in myUtils.pm, die ich auch häufig anderweitig verwende:
sub schrdatei($$) {
   my ($was, $wohin) = @_;
   open  (DATEI, $wohin) or die $!;
   print  DATEI  $was;
   close (DATEI);
   return
}
Titel: Aw: [Nicht nachdenkenswert] Logbuch - formatierung CRLF
Beitrag von: Prof. Dr. Peter Henning am 28 April 2023, 22:34:36
Auch das gehört nicht ins Anfängerforum. Sondern - auch wenn es eher trivial ist - zu Codeschnipseln.

LG

pah