Laravel用cwh发日志到CloudWatch报错:日志服务无指定版本
解决CloudWatch日志服务版本报错问题
问题诊断
报错信息:
laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (Aws\\Exception\\UnresolvedApiException(code: 0): The logs service does not have version: 2014-03-28. at /var/www/vhosts/stage2.abalancingact.com/vendor/aws/aws-sdk-php/src/Api/ApiProvider.php:85)
该错误核心是当前环境的AWS SDK无法识别指定的CloudWatch Logs API版本,常见原因是库版本不兼容或配置参数错误。
修复方案
修正日志配置参数
打开Laravel的config/logging.php,找到CloudWatch日志通道的配置段,确保:version参数用字符串格式设置为'2014-03-28'(避免被解析为非字符串类型);service参数明确指定为'logs',不要使用错误的服务别名。
示例配置片段:
'cloudwatch' => [ 'driver' => 'custom', 'via' => \Maxbanton\Cwh\Handler\CloudWatch::class, 'sdk' => [ 'version' => '2014-03-28', 'service' => 'logs', 'region' => '你的AWS区域', 'credentials' => [ 'key' => '你的AWS Access Key', 'secret' => '你的AWS Secret Key', ], ], 'log_group' => '你的日志组名称', 'log_stream' => '你的日志流名称', 'retention' => 30, ],对齐库版本兼容性
maxbanton/cwh与AWS SDK存在版本依赖关系,执行以下命令安装兼容的版本组合:composer require maxbanton/cwh:^2.0 composer update aws/aws-sdk-php --with-all-dependencies执行后确认
vendor/aws/aws-sdk-php/data/logs/2014-03-28/路径下存在API定义文件,若缺失则重新执行composer install --no-dev完成依赖安装。额外排查点
- 确认云端环境的IAM角色/用户拥有CloudWatch Logs的写入权限;
- 检查是否有环境变量(如
AWS_API_VERSION)覆盖了SDK的版本配置。
内容的提问来源于stack exchange,提问作者Eder Vásquez
相关产品推荐
相关产品推荐

