使用的是swoft
php运行时会有error级别错误,会直接打印到屏幕或输出到swoole.log,期望能监听到如果是PHP Fatal error就监听到具体错误信息通过钉钉机器人直接推送消息到钉钉群中
1.在 App::error();主动写入error级别日志时,监听了相关信息
// 请把代码文本粘贴到下方(请勿用图片代替代码)
base/vendor/swoft/framework/src/App.php
/** * error级别日志 * * @param mixed $message 日志信息 * @param array $context 附加信息 */ public static function error($message, array $context = array()) { self::dingdingLog($message, $context); self::getLogger()->error($message, $context); } /** * 发送钉钉消息 * @param mixed $msg 信息 * @param array $context 附加信息 * @param bool $isMe * @throws \Exception */ public static function dingdingLog($msg, array $context = array()) { $serverIp = swoole_get_local_ip(); $serverIp = empty($serverIp) ? '' : JsonHelper::encode($serverIp); $content = '### <font color="#dd0000">' . APP_NAME . '</font> Error Log' . PHP_EOL; $content .= '1. Message:' . $msg . PHP_EOL; if (!empty($context)) $content .= '2. Context:' . JsonHelper::encode($context) . PHP_EOL; $content .= '3. Time:' . date('Y-m-d H:i:s') . PHP_EOL; $content .= '4. Ip:' . $serverIp . PHP_EOL; $body = [ 'msgtype' => 'markdown', 'markdown' => ['title' => 'Log Error', 'text' => $content], ]; $client = new \Swoft\HttpClient\Client(); $client->post(DING_DING_LOG_URL, ['body' => JsonHelper::encode($body), 'headers' => ['Content-Type' => 'application/json;charset=utf-8']]); return $client; }
期望能把php运行的error错误也监听
相关分类