renatosilva/laravel-cloudwatch-logs

Laravel适配AWS CloudWatch

dev-master 2023-08-26 10:59 UTC

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_KEYCLOUDWATCH_LOG_SECRET

贡献

我已经添加了一个pre-commit钩子,在您提交时运行php-cs-fixer。要启用此功能,请运行sh hooks.sh