Autor Thema: Am Monatsende um 23:55 Logdatei neu generieren  (Gelesen 4376 mal)

Offline kud

  • Full Member
  • ***
  • Beiträge: 499
Am Monatsende um 23:55 Logdatei neu generieren
« am: 01 April 2013, 15:19:32 »
Habe irgendwie Probleme beim Monatswechsel.
Meine Logfiles heissen zb. aktuell 201305-Alarm.log
Da drin wird der Status eins Schalters gespeichert.
Wenn der Monat sich ändert, exestiert die Datei nicht und wird erst beim ersten Schalterdrücken angelegt.
Nun werte ich aber die Logfiles mit einem externen PHP-Programm aus. Blöd wenn die Datei nicht da ist.
Meine Idee. Kurz vor Ablauf des Kalender Monats durch den Log-Ordner gehen und die neuen Dateien mit der letzten Zeile des aktuellen Monats anlegen.
zb. tail -1 201304-Alarm.log > 201305-Alarm.log

Kann man das irgendwie mit einem "at" abbilden? Oder wie würde Ihr das machen?





Offline UliM

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2711
Aw: Am Monatsende um 23:55 Logdatei neu generieren
« Antwort #1 am: 01 April 2013, 16:00:56 »
Hi,
Du kannst am Monatsende eonmal um 23:59 und dann um 0:01 Werte in die Logs schreiben. Dann hast Du in der 'alten' logdatei den richtigen Schlusswert, und die neue Logdatei wird gleich nach Mittarncht angelegt und enthält auch den richtrigen Monatsstartwert.
Schau mal hier: http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Offline kud

  • Full Member
  • ***
  • Beiträge: 499
Aw: Am Monatsende um 23:55 Logdatei neu generieren
« Antwort #2 am: 01 April 2013, 16:55:28 »
Und wie definiere ich ein Monatsende?

Offline UliM

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2711
Aw: Am Monatsende um 23:55 Logdatei neu generieren
« Antwort #3 am: 01 April 2013, 18:25:46 »
Hi,
zB  
- täglich 23:59:30
- prüfen, ob der Monat des morgigen Tages gleich dem Monat des heutigen Tages ist
- falls ja
-- addlog schreiben
-- in 1 Minute nochmal addlog schreiben

also sowas wie

define addlog1 at *23:59:30 {
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );
  if ( $month2 > $month ) {
      addLog(<device>,<reading>); fhem("define addlog2 at +00:01 addLog(<device>,<reading>)");
  }
}

Ungetestet. Die Time-Funktionen hab ich nachgelesen in http://www.fhemwiki.de/wiki/Uhrzeit:_Offset_berechnen .

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Offline Groby

  • Full Member
  • ***
  • Beiträge: 191
Aw: Am Monatsende um 23:55 Logdatei neu generieren
« Antwort #4 am: 01 April 2013, 18:31:38 »
kannst Du nicht einfach einem Dummy einen x-beliebigen Wert zuweisen, damit ein log Eintrag erstellt wird?

Offline kud

  • Full Member
  • ***
  • Beiträge: 499
Aw: Am Monatsende um 23:55 Logdatei neu generieren
« Antwort #5 am: 01 April 2013, 18:41:05 »
Zitat von: UliM schrieb am Mo, 01 April 2013 18:25
Hi,
zB  
- täglich 23:59:30
- prüfen, ob der Monat des morgigen Tages gleich dem Monat des heutigen Tages ist
- falls ja
-- addlog schreiben
-- in 1 Minute nochmal addlog schreiben

also sowas wie

define addlog1 at *23:59:30 {
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );
  if ( $month2 > $month ) {
      addLog(<device>,<reading>); fhem("define addlog2 at +00:01 addLog(<device>,<reading>)");
  }
}

Ungetestet. Die Time-Funktionen hab ich nachgelesen in http://www.fhemwiki.de/wiki/Uhrzeit:_Offset_berechnen .

=8-)


Da muss ich immer eingreifen und die entsprechenden Devices hinterlegen.
Mir erscheint das zu kompliziert.
Einfach alle Dateien mit Anfang 2013Monat finden und mit tail -1 alteDatei neueDatei+Monat1 zu kopieren.
Der Test kann ja jede Nacht um 23:59 durchgeführt werden.



Offline UliM

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2711
Aw: Am Monatsende um 23:55 Logdatei neu generieren
« Antwort #6 am: 01 April 2013, 18:49:53 »
Zitat von: kud schrieb am Mo, 01 April 2013 18:41

Da muss ich immer eingreifen und die entsprechenden Devices hinterlegen.

Eigtl musst Du das ganze Konstrukt nur ein einziges mal anlegen - oder überseh ich was?
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Offline Groby

  • Full Member
  • ***
  • Beiträge: 191
Aw: Am Monatsende um 23:55 Logdatei neu generieren
« Antwort #7 am: 01 April 2013, 19:10:56 »
wie wäre es mit einem Monatsanfang?

define Monatsanfang +*00:00:01 Log 1, "Monatswechsel" if $mday=1

ungetestet...

 

decade-submarginal