php监控日志,发现500 503 等错误发送邮件提示
2017-04-11
后端
基于phpmailer这类,网上到处可以下,再注册个邮箱,设置个计划任务执行,我设置的是2分钟,自己设置要监控的错误代码,这个是当初为了排查服务器问题弄的,检测iis默认日志,具体情况要具体修改
<?php
include("PHPMailer/class.phpmailer.php");
//error_reporting(0);
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "smtp.126.com"; // sets the SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "xxx@126.com"; // SMTP account username 邮箱用户名
$mail->Password = "xxxxxxxxx"; // SMTP account password 密码
$mail->SetFrom('xxxxxxx@126.com', '报错');//
$now = "u_ex".date("ymdH").".log";
try{
$log = file("F:/iis-log/W3SVC2/".$now);//日志路径自己改
}catch(Exception $e){
echo "no file ";
exit;
}
$error = array();
$start = date("i",time()-120);
$end = date("i");
if($start > $end){
exit;
}
$aa = range($start,$end);
$code = mkstr($aa);
echo $code;
$pattern = "/($code).*(s500s|s503s)/";//这里自己修改
$i = 0;
foreach($log as $k => $v){
if(preg_match($pattern,$v)){
$error[] = $v;
echo $v;
$i += 1;
}
}
if(!empty($error)){
$content = implode("<br/>",$error);
$mail->Subject="$i errors ";
$mail->AddAddress("xxxxxxxxxx@163.com");
$mail->AddAddress("xxxxxxxx@126.com");
$mail->MsgHTML($content);
$mail->send();
}
echo "nover";
function mkstr($arr){
$code = '';
foreach($arr as $k => $e){
$code .=":$e:|";
}
$code = rtrim($code,"|");
return $code;
}