fehlerhafte Programme kann oft nur der Hersteller anpassen, um dennoch mit dem ein oder anderen Fehler zurecht zu kommen, können mit diesem Tool Logfiles überwacht und cmd-Aktionen gesetzt werden.
mit diesem Tool kannst du Logfiles beliebiger Programme überwachen und Aktionen setzen.
Das Tool durchsucht den Text der Logfiles und führt eine Aktion durch (Rechner neu starten, Dienste neu starten, Programm ausführen, ...)
Die Logfiles, der Suchtext und die Aktionen werden zentral in einer .ini Datei festgelegt. (searcherror.ini)
Die searcherror.ini sollte standardmäßig im selben Ordner wie die log_watchdog.exe liegen. (außer du kompilierst den unten angeführten Quellcode mit einem fixen Pfad neu)
Durchgeführte Aktionen werden in ein Logfile geschrieben.
Die
Das Tool muss einmalig gestartet werden. Für ein automatisches Starten beim Anmelden beispielsweise, kann eine Verknüpfung zur log_watchdog.exe in den Autostartordner gelegt werden. (Verknüpfung deshalb, da die .ini Datei im selben Ordner, wie die log_watchdog.exe liegen soll)
Format für die searcherror.ini:
[LogSektion:hier kann ein belieber Text eingesetzt werden, sollte aber einmalig in der .ini Datei sein]
logfile="(hier der Pfad zum Logfiles, welches überwacht werden soll)"
search="der Suchtext bei dem eine Aktion ausgeführt werden soll"
action="die Aktion die ausgeführt werden soll"
Beispiele für action:
Rechner neu starten: "%SYSTEMROOT%\system32\shutdown.exe -r -f -t 0"
Rechner herunterfahren: "%SYSTEMROOT%\system32\shutdown.exe -s -f -t 0"
z.B. kann mit action auch auf eine Batchdatei verwiesen werden: "c:\batch\starte.cmd"
Beispiel für eine ini Datei (searcherror.ini)
[error0]
logfile="error.log"
search="unable to connect to slave controller"
action="c:\windows\system32\cmd.exe"
[error1]
logfile="C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Team MediaPortal\MediaPortal TV Server\log\tv.log"
search="dvb:StopGraph called"
action="c:\restart_tv_und_mediaportal.cmd"
[error2]
logfile="C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Team MediaPortal\MediaPortal TV Server\log\tv.log"
search="card not found :Cinergy 1200 DVB-C Tuner"
action="c:\windows\system32\shutdown.exe -r -f -t 0"
[error4]
logfile="C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Team MediaPortal\MediaPortal TV Server\log\error.log"
search="SetupTv(1)]: Exception"
action="c:\windows\system32\shutdown.exe -r -f -t 0"
[error5]
logfile="C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Team MediaPortal\MediaPortal TV Server\log\error.log"
search="RemoteControl: Error getting server Instance"
action="c:\windows\system32\shutdown.exe -r -f -t 0"
Achtung Windows Benutzer: die searcherror.ini darf nicht searcherror.ini.txt heißen, ansonsten findet das Skript die ini Datei nicht und es wird folgender Fehler ausgegeben: Error occurred, probably no INI file
Wenn das Tool einen Fehler findet, wird die Datei watch.ini angelegt:
In dieser wird die Position des Suchtextes geschrieben, wird der Suchtext nach dieser Position erneut gefunden, wird die Aktion erneut ausgeführt.
Quellcode (kann angepasst und online auf dieser Seite kompiliert werden)
die Datei beruht auf folgendem Quellcode.
zum anpassen, folgenden Code in den AutoIT Online Compiler geben und neu kompilieren:
#include <file.au3>
#include <GUIConstants.au3>
$logfilewrite="watchdoglog.txt"
_FileWriteLog($logfilewrite, "------------------------------init logfile----------------------------")
$timewait=10000
$inifile="searcherror.ini"
$iniwatch="watch.ini"
$var = IniReadSectionNames($inifile)
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file:" & $inifile)
exit
Else
For $i = 1 To $var[0]
$logfile=IniRead ( $inifile, $var[$i], "logfile", "default" )
Hey, das Skript funktioniert gut, hat aber ein Memory-Leak - der FileClose($file) findet nur statt, wenn im Logfile etwas gefunden wurde - und danach wird das File auch erneut geöffnet. Da FileOpen($logfile,o) in der Schleife läuft werden dauernd neue Handles geöffnet - man kann dies im Taskmanager schön sehen, der Speicherverbraucht steigt und steigt und steigt. Durch das Einfügen von FileClose($file) direkt vor dem sleep(1000) in der 4. letzten Zeile ist das Memory leak Problem gelöst!
Webmaster: Super Danke für den Hinweis, hab das Skript angepasst!
Kommentare die nicht unmittelbar mit diesem Thema zu tun haben,
sowie Supportanfragen oder Hilfe bitte ins Forum posten: Support Forum