php监控日志500、503错误并发送邮件提示的代码

发布时间:2019-11-18编辑:脚本学堂
分享一例php代码,用于监控日志中的500、503错误,并发送提示邮件,有需要的朋友参考下吧。

本例代码,基于PHPMailer类实现,设置个计划任务执行,自己设置要监控的错误代码。
可用于排查服务器问题,检测iis默认日志、nginx日志等,请根据自己的需要做修改。

有关phpmailer类的用法,请参考文章:

例子:
 

复制代码 代码示例:

<?php
/**
* 监控日志 500 503错误
* by www.jb200.com
*/
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;
}