php require_once 一个基于责任链模式的 PHP 错误日志处理组件
php require_once 一个基于责任链模式的 PHP 错误日志处理组件
安装方式
使用 安装:
composer require hejunjie/error-log
使用方式
useHejunjieErrorLogLogger;
useHejunjieErrorLogHandlers;
$log = new Logger([
new HandlersConsoleHandler(), // 打印到控制台
new HandlersFileHandler('日志存储文件夹路径'), // 存储到文件
new HandlersRemoteApiHandler('请求url') // 发送到某个地址
]);
$log->info('标题','内容',['上下文']); // INFO 级
$log->warning('标题','内容',['上下文']); // WARNING 级
$log->error('标题','内容',['上下文']); // ERROR 级
$log->log('自定义级别','标题','内容',['上下文']);
用途 & 初衷

这个组件的起因其实很简单: 代码跑在不同的服务器上,有的安静得像退休老头,有的动不动炸成烟花——但它们都在跑“同一份代码”,每次炸了还都来找我。
最离谱的是php require_once 一个基于责任链模式的 PHP 错误日志处理组件,每个人都说是“最新版”,但到底是代码问题、环境问题、部署问题php require_once,谁知道? 于是我写了这个小东西:让日志可以灵活地 输出到文件、控制台、远程服务器,最好还能自定义格式php require_once,让我在被质问之前php require_once 一个基于责任链模式的 PHP 错误日志处理组件,先找到锅。
后来还写了个日志接收小脚本,配合这个组件可以把远程日志直接展示出来php require_once,用来接收、展示、筛选、管理日志错误信息:
oh-shit-

对应完整的自定义错误处理(来自)
namespaceappexception;
useCarbonCarbon;
useThrowable;
useWebmanExceptionExceptionHandler;
useWebmanHttpRequest;
useWebmanHttpResponse;
usesupportexceptionBusinessException;
useHejunjieErrorLogLogger;
useHejunjieErrorLogHandlers;
/**
* Class Handler
* @package supportexception
*/
classHandlerextendsExceptionHandler
{
public $dontReport = [
BusinessException::class,
];
publicfunctionreport(Throwable $exception)
{
parent::report($exception);
if ($this->shouldntReport($exception)) {
return;
}
$request = request;
$date = Carbon::now->timezone(config('app')['default_timezone'])->format('Y-m-d');
(new Logger([
new HandlersFileHandler(runtime_path("logs/{$date}/critical")),
new HandlersRemoteApiHandler(config('app')['log_report_url'])
]))->error(get_class($exception), $exception->getMessage, [
'project' => config('app')['app_name'],
'ip' => $request->getRealIp,
'method' => $request->method,
'full_url' => $request->fullUrl,
'trace' => $this->getDebugData($exception)
]);
}
publicfunctionrender(Request $request, Throwable $exception): Response
{
$isDebug = config('app')['debug'] == 1;
$statusCode = $this->getHttpStatusCode($exception);
$response = [
'code' => $this->getErrorCode($exception),
'message' => $isDebug ? $exception->getMessage() : 'Server Error',
'data' => $isDebug ? $this->getDebugData($exception) : new stdClass()
];
if ($requestId = $request->header('X-Request-ID')) {
$response['request_id'] = $requestId;
}
returnnew Response(
$statusCode,
['Content-Type' => 'application/json'],
json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
);
}
protectedfunctiongetHttpStatusCode(Throwable $exception): int
{
$code = $exception->getCode;
return ($code >= 100 && $code < 600) ? $code : 500;
}
protectedfunctiongetErrorCode(Throwable $exception): int
{
return $exception->getCode ?: 500;
}
protectedfunctiongetDebugData(Throwable $exception): array
{
$trace = $exception->getTrace;
$simplifiedTrace = array_map(function($frame){
return [
'file' => $frame['file'] ?? '[internal function]',
'line' => $frame['line'] ?? 0,
'function' => $frame['function'] ?? ,
'class' => $frame['class'] ?? ,
'type' => $frame['type'] ??
];
}, $trace);
return [
'class' => get_class($exception),
'message' => $exception->getMessage(),
'code' => $exception->getCode(),
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'trace' => config('app')['debug'] == 1 ? $simplifiedTrace : array_slice($simplifiedTrace, 0, 5),
'previous' => $exception->getPrevious ? [
'class' => get_class($exception->getPrevious()),
'message' => $exception->getPrevious()->getMessage()
] :
];
}
}
感谢大家阅读,个人观点仅供参考,欢迎在评论区发表不同观点。
公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » php require_once 一个基于责任链模式的 PHP 错误日志处理组件
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » php require_once 一个基于责任链模式的 PHP 错误日志处理组件
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

