php怎么实现接口请求日志记录_php如何自动记录入参出参与耗时
最可靠方式是在PHP请求入口统一拦截用microtime(true)打点、ob_start()捕获响应体结构化记录$_GET/$_POST/$_SERVER等避免漏记、格式不一及耗时不准。怎么在 PHP 请求入口统一记录入参、出参和耗时直接在框架或原生入口处加一层拦截最可靠不依赖中间件机制也能生效。核心是用 microtime(true) 打点配合 ob_start() 捕获响应体再把原始 $_GET、$_POST、$_SERVER 等结构化记录。别在每个控制器方法里手动写日志——漏记、格式不一致、耗时统计不准避免用 register_shutdown_function() 捕获响应——可能被 exit 或异常中断ob_get_contents() 拿不到完整输出注意 $_FILES 和大文件上传场景记录时只存文件名/类型别序列化整个数组否则日志爆炸如果用了 Swoole 或 Hyperf得改用协程上下文Co::getContext()存请求 ID不能依赖全局变量用 Monolog 记录接口日志时怎么避免性能拖慢默认 FileHandler 同步写磁盘高并发下容易阻塞。必须异步化但不是简单加个 StreamHandler 就完事。用 RotatingFileHandler 替代 StreamHandler并设置 $maxFiles 7 防止日志滚雪球日志通道必须独立别和业务日志混用同一个 Handler否则接口慢会拖垮整个日志系统敏感字段如 password、token 要在写入前用正则或白名单过滤别等日志落盘后再脱敏不要在日志里 json_encode($GLOBALS) —— 可能含资源句柄或递归引用直接触发致命错误为什么 var_export($_REQUEST) 会导致日志写入失败var_export() 遇到资源类型比如 MySQLi 连接、cURL 句柄会直接报 PHP Warning: var_export does not handle circular references导致后续日志逻辑跳过。 文心快码 文心快码Comate是百度推出的一款AI辅助编程工具