pagevamp / laravel-cloudwatch-logs
Laravel 对 AWS CloudWatch 的适配器
Requires
- illuminate/support: ^5.1 || ^6.0 || ^7.0 || ^8.0 || ^9.0|^10.0 || ^11.0
- phpnexus/cwh: ^1.1.14 || ^2.0 || ^3.0.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12 || ^2.16|^3.14
- mockery/mockery: ^1.2
- phpunit/phpunit: ^6.5 || ^8.4 || ^9.0 || ^10.5
README
版本 1.0 的重大变更
当这个包开始时,它作为一个日志事件的监听器,只能与另一个通道一起工作。这个包会监听日志事件,并为云监控添加额外的日志。因此,您不需要将云监控添加为 channel
。但是,在 1.0
之后,它作为一个自定义的驱动程序工作。因此,您必须将 LOG_CHANNEL
设置为 cloudwatch
,以便在未来的配置中工作。
安装
composer require pagevamp/laravel-cloudwatch-logs
示例
您可以使用 Laravel 的默认 \Log
类来使用此功能
\Log::info('用户已登录', ['id' => 123, 'name' => 'Naren']);
与 AWS Lambda 一起使用
确保 AWS Lambda 模板包含足够的访问权限的 IAM 角色。因此,考虑 Logs:CreateLogGroup, Logs:DescribeLogGroups, Logs:CreateLogStream, Logs:DescribeLogStream, Logs:PutRetentionPolicy 和 Logs:PutLogEvents
配置
日志配置在 config/logging.php
中定义。将 cloudwatch
添加到 channels
数组中
'channels' => [
'cloudwatch' => [
'driver' => 'custom',
'name' => env('CLOUDWATCH_LOG_NAME', ''),
'region' => env('CLOUDWATCH_LOG_REGION', ''),
'credentials' => [
'key' => env('CLOUDWATCH_LOG_KEY', ''),
'secret' => env('CLOUDWATCH_LOG_SECRET', '')
],
'stream_name' => env('CLOUDWATCH_LOG_STREAM_NAME', 'laravel_app'),
'retention' => env('CLOUDWATCH_LOG_RETENTION_DAYS', 14),
'group_name' => env('CLOUDWATCH_LOG_GROUP_NAME', 'laravel_app'),
'version' => env('CLOUDWATCH_LOG_VERSION', 'latest'),
'formatter' => \Monolog\Formatter\JsonFormatter::class,
'batch_size' => env('CLOUDWATCH_LOG_BATCH_SIZE', 10000),
'via' => \Pagevamp\Logger::class,
],
]
并将环境变量中的 LOG_CHANNEL
设置为 cloudwatch
。
如果您的 AWS EC2 实例的角色可以访问 Cloudwatch 日志,则不需要在 .env
文件中定义 CLOUDWATCH_LOG_KEY
和 CLOUDWATCH_LOG_SECRET
。
贡献
我已经添加了一个 pre-commit
钩子,在您每次提交时运行 php-cs-fixer
。要启用此功能,请运行 sh hooks.sh
。