Ich scanne mein Logfile jeden Tag kurz vor Mitternacht und sende dann ein Protokoll der Fehlermeldungen per Mail.
PHP-Code:
<?php
//Suche nur ERROR und WARNINGS im Logfile
$search = Array(
"ERROR",
"WARNING"
);
//Filter bestimmt Fehler, die nicht gemeldet werden sollen
$filter = Array(
"Fehler beim Senden des Befehls"
);
$errors = searchError(IPS_GetLogDir()."logfile.log", $search, $filter);
if(sizeof($errors) > 0) {
IPS_LogMessage("Errors found!", "Send Mail with ".sizeof($errors)." errors");
SMTP_SendMail(53274, "Mein SmartHome", print_r($errors, true));
}
function searchError($filename, $keywords, $filter)
{
$result = Array();
$handle = fopen($filename, "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
foreach($keywords as $searchStr)
{
if(!(strpos($buffer, $searchStr) === false))
{
$matchFilter = false;
foreach($filter as $str) {
if(strpos($buffer, $str) !== false) {
$matchFilter = true;
break;
}
}
if(!$matchFilter) {
$result[] = $buffer;
}
break;
}
}
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
return;
}
fclose($handle);
}
return $result;
}
paresy