Hallo,
ich würde gerne einen notify triggern sobald eine bestimmte Meldung in einem Logfile eingetragen wird / gerade wurde.
Beispiel:
Ich habe einen IMAP Client der - wenn er keinen connect bekommt - im (globalen) Logfile eine Eintragung macht.
Zitat
2018.12.05 04:04:40 1: PERL WARNING: Trying command when NOT connected! at /usr/local/share/perl/5.24.1/Mail/IMAPClient.pm line 122.
Mail::IMAPClient::LastError(Mail::IMAPClient=HASH(0x4431660), "NO not connected") called at /usr/local/share/perl/5.24.1/Mail/IMAPClient.pm line 1554
Mail::IMAPClient::_send_line(Mail::IMAPClient=HASH(0x4431660), "435 SELECT INBOX", 0) called at /usr/local/share/perl/5.24.1/Mail/IMAPClient.pm line 1330
Mail::IMAPClient::_imap_command_do(Mail::IMAPClient=HASH(0x4431660), "SELECT INBOX") called at /usr/local/share/perl/5.24.1/Mail/IMAPClient.pm line 1234
Mail::IMAPClient::_imap_command(Mail::IMAPClient=HASH(0x4431660), "SELECT INBOX") called at /usr/local/share/perl/5.24.1/Mail/IMAPClient.pm line 850
Mail::IMAPClient::select(Mail::IMAPClient=HASH(0x4431660), "INBOX") called at ./FHEM/32_mailcheck.pm line 275
main::mailcheck_poll(HASH(0x32c4940)) called at fhem.pl line 3146
main::HandleTimeout() called at fhem.pl line 649
Ich würde nun gerne auf einen solchen Eintrag mit einem notify (oder watchdog) reagieren und in o. g. Beispiel den Mailclient neu starten.
Analog dazu fallen mir noch ein paar andere Anwendungsfälle ein. Das Problem ist jedesmal, dass ich kein reading eines devices habe welches ich dazu abfragen könnte.
Hat mir jemand einen Tipp wie man das machen kann?
Danke und viele Grüsse
Bäschdler
Hi!
Schau Dir mal das Attribut readLog von notify an.
Patrick
Von unterwegs gesendet.
Super, das war die Lösung. Danke
Jetzt noch eine Frage: Gibt es noch eine Möglichkeit das mit einem (beliebigen) anderen Logfile zu machen oder nur mit dem FHEM-Log ?
Viele Grüsse
Bäschdler
Nur mit dem FHEM-Log.
Da andere Logfiles nach einem Event geschrieben werden, waere so eine Operation unnoetig aufwendig.
Wenn die Datei nicht von FHEM geschrieben ist, dann muss man sowas wie inotify verwenden.