renatosilva / laravel-cloudwatch-logs
Laravel适配AWS CloudWatch
Requires
- illuminate/support: ^5.1 || ^6.0 || ^7.0 || ^8.0 || ^9.0|^10.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
This package is not auto-updated.
Last update: 2024-09-22 14:19:17 UTC
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
。