要记录百度api调用日志,必须手动在调用处显式打点并确保monolog启用debug级别、日志目录可写且环境为dev;否则请求url、响应体、耗时等关键信息将无法落盘。

Symfony2 本身不内置百度 API 日志记录能力,必须手动注入日志逻辑;默认配置下,monolog 不会自动捕获外部 HTTP 请求细节(如百度 API 的请求 URL、响应体、耗时),这些信息需显式调用 $logger->info() 或 $logger->debug() 才能落盘。
确认 monolog 是否启用 debug 级别(否则百度请求日志被静默丢弃)
Symfony2 默认日志级别常为 warning 或 error,debug 和 info 级别日志不会写入文件。若你已在代码中调用 $logger->info('calling baidu api') 却没在 app/logs/dev.log 中看到,大概率是级别被过滤了。
- 检查
app/config/config_dev.yml中是否含以下配置:
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
- 确保环境变量
APP_ENV=dev且debug=true(Symfony2 中通常通过app_dev.php启动,而非设置APP_DEBUG) - 若使用
prod环境测试,level: info是最低可用值,debug会被强制忽略
在调用百度 API 的位置主动打点(不能依赖自动拦截)
Symfony2 没有类似 Symfony5+ 的 HttpClient 中间件机制,所有百度 API 调用(无论是 file_get_contents、cURL 还是第三方 SDK)都必须人工包裹日志逻辑。
- 不要只记录“开始调用”,要捕获关键上下文:请求参数、返回状态码、响应体片段(避免日志爆炸,截取前 200 字符)、耗时
- 示例(使用 cURL):
$start = microtime(true);
$ch = curl_init('https://www.php.cn/link/46a9db52ce50655a6b3da1193a759622');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$duration = round(microtime(true) - $start, 3);
<p>$logger->info('baidu_api_call', [
'url' => '<a href="https://www.php.cn/link/46a9db52ce50655a6b3da1193a759622">https://www.php.cn/link/46a9db52ce50655a6b3da1193a759622</a>',
'params' => ['q' => $query],
'http_code' => $code,
'duration' => $duration,
'response_preview' => mb_strimwidth($response, 0, 200, '…'),
]);</p>
- 若使用百度官方 PHP SDK,需在其回调或结果处理处插入日志,SDK 本身不提供日志钩子
排查日志未生成的三个硬性断点
即使代码写了 $logger->info(),日志仍可能完全不出现——这不是逻辑问题,而是基础设施卡点。
-
app/logs目录权限错误:执行ls -ld app/logs,确认 web 用户(如www-data)对该目录有rw权限;常见错误是目录属主为root,导致 PHP 进程无法写入 -
%kernel.logs_dir%路径被覆盖:在app/AppKernel.php中检查是否重写了getLogDir()方法,或在config.yml中误配了monolog.handlers.main.path绝对路径但目录不存在 - 日志处理器被禁用:检查是否有其他 bundle(如某些监控 SDK)在
boot()阶段替换了monolog.logger服务,导致你的$logger实际未绑定到文件 handler
最易被忽略的是:百度 API 返回 401 或 403 时,响应体往往含中文错误提示(如“access_token invalid”),但若你只记录 $code 而不记录 $response 片段,就永远不知道令牌过期还是 AK/SK 写错了。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











