pagevamp/laravel-cloudwatch-logs

Laravel 对 AWS CloudWatch 的适配器

v1.1.2 2024-03-18 04:11 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