(2)
Artikel
bewerten
(85% positiv)
(11)

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"



log_watchdog3.exe Größe:(281.06 kB): Download



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" )

                        $search=IniRead ( $inifile, $var[$i], "search", "default" )
                        $action=IniRead ( $inifile, $var[$i], "action", "default" )
                        _FileWriteLog($logfilewrite, "started looking in: " & $logfile & "action:" & $action & " found: " & $search)
    Next
EndIf
_FileWriteLog($logfilewrite, "-----------------------------lets start -------------------------------")
While 1

$var = IniReadSectionNames($inifile)
If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file." & $inifile)
Else
    For $i = 1 To $var[0]
        $logfile=IniRead ( $inifile, $var[$i], "logfile", "default" )
                        $file = FileOpen($logfile, 0)
                        ; Check if file opened for reading OK
                        If $file <> -1 Then
                            ; Read in 1 character at a time until the EOF is reached
                        $line = FileRead($file)
                        $search=IniRead ( $inifile, $var[$i], "search", "default" )
                        $action=IniRead ( $inifile, $var[$i], "action", "default" )
                        $result = StringInStr($line, $search, 1, -1)
                        $lastresult=IniRead ($iniwatch, $var[$i], $action, "1")
                                if $result > $lastresult then                                
                                        IniWrite($iniwatch, $var[$i], $action, $result)
                                        TrayTip("Event " & $action & " in " & $timewait/1000  & " Sekunden", "AutoIT Watchdog " & $logfile & " found: " & $search, 5, 1)
                                        sleep($timewait)
                                        _FileWriteLog($logfilewrite, "action:" & $action & " found: " & $search & " in " & $logfile)
                                        run($action,"",@SW_MINIMIZE)
                                        sleep($timewait*3)
                                        $result=0
                                endif
                                If @error = -1 Then ExitLoop
                        EndIf
                        FileClose($file)
                        sleep(1000)       
    Next
EndIf
Wend


Zum Anpassen, vorher den Quellcode in die Zwischenablage speichern und weiter zum AutoIT OnlineCompiler

letzte Änderung dieses Artikels: 05.06.2016 11:42




Kommentare