cloudsyncPro - Notification en cas d'erreur - test d'une valeur dans une log

Voici le petit bout de code à coller derrière l’exécution d’un scénario avec du cloudsyncpro

Mais que fait-il?
(pour les buses en code php, comme moi ou pire):
Je vais vérifier, pour l’exécution du jour, qu’il n’y pas pas eu d’erreur « Error(x) » (x <> 0) dans la log de cloudsyncpro

Si c’est le cas j’initialise une variable que vous pourrez exploiter pour envoyer un mail, sms, ou tt autres actions via la condition variable(backup_error_code) == "1"

J’ai fait au plus simple, je ne vérifie pas que la log existe par exemple…

// Search pattern in log, return backup_error_code [0|1]

$scenario->setData("backup_error_code", 0);
$log = '/var/www/html/log/cloudsyncpro';
$date_format = date('Y-m-d');
$pattern = "#\[$date_format.*Errors \([1-9][0-9]*\).*#";

$content_log = (file_get_contents($log));
preg_match_all($pattern, $content_log, $out, PREG_PATTERN_ORDER); // A RegEx grep in PHP
$error_array = $out[0]; // $out[0] contains the content matched by the RegEx
foreach($error_array as &$log_entry) {
    $scenario->setData("backup_error_code", 1);
    $scenario->setData("backup_error_output", $log_entry);
	$scenario->setLog("ALERT: Error found in log:" .$log_entry);
}

Have fun!

2 « J'aime »