maxbanton / cwh
Monolog 库的 AWS CloudWatch Handler
v2.0.4
2022-11-09 13:18 UTC
Requires
- php: ^7.2 || ^8
- aws/aws-sdk-php: ^3.18
- monolog/monolog: ^2.0
Requires (Dev)
- phpunit/phpunit: ^8.5 || ^9.4
- squizlabs/php_codesniffer: ^3.5
Suggests
- maxbanton/dd: Minimalistic dump-and-die function for easy debugging
README
AWS CloudWatch 日志处理器 for Monolog
用于将日志条目发送到 AWS CloudWatch Logs 服务的 PHP 日志库 Monolog 处理器。
使用此库之前,建议了解 AWS CloudWatch 服务的 定价。
如果您觉得这个库很有用,请按下 ★ 星标 按钮。
免责声明
此库通过 AWS PHP SDK 使用 AWS API,对并发请求有限制。这意味着在高并发或高负载的应用程序中,它可能无法以最佳方式运行。请考虑使用其他解决方案,例如使用 fluentd 将日志重定向到 stdout。
要求
- PHP ^7.3
- 具有适当权限的 AWS 账户(见下文权限列表)
功能
- 最多发送 10,000 个批次日志,以避免 速率超过 错误
- 使用标签创建日志组
- AWS CloudWatch 日志工作人员延迟加载
- 适用于 Web 应用程序以及长期运行的 CLI 守护程序和工作进程
安装
通过运行以下命令使用 Composer 安装最新版本
$ composer require maxbanton/cwh:^2.0
基本用法
<?php use Aws\CloudWatchLogs\CloudWatchLogsClient; use Maxbanton\Cwh\Handler\CloudWatch; use Monolog\Logger; use Monolog\Formatter\JsonFormatter; $sdkParams = [ 'region' => 'eu-west-1', 'version' => 'latest', 'credentials' => [ 'key' => 'your AWS key', 'secret' => 'your AWS secret', 'token' => 'your AWS session token', // token is optional ] ]; // Instantiate AWS SDK CloudWatch Logs Client $client = new CloudWatchLogsClient($sdkParams); // Log group name, will be created if none $groupName = 'php-logtest'; // Log stream name, will be created if none $streamName = 'ec2-instance-1'; // Days to keep logs, 14 by default. Set to `null` to allow indefinite retention. $retentionDays = 30; // Instantiate handler (tags are optional) $handler = new CloudWatch($client, $groupName, $streamName, $retentionDays, 10000, ['my-awesome-tag' => 'tag-value']); // Optionally set the JsonFormatter to be able to access your log messages in a structured way $handler->setFormatter(new JsonFormatter()); // Create a log channel $log = new Logger('name'); // Set handler $log->pushHandler($handler); // Add records to the log $log->debug('Foo'); $log->warning('Bar'); $log->error('Baz');
框架集成
AWS IAM 需要的权限
如果您想使用单独的程序 IAM 用户(推荐)或定义策略,请确保以下权限已包含在内
CreateLogGroup
aws 文档CreateLogStream
aws 文档PutLogEvents
aws 文档PutRetentionPolicy
aws 文档DescribeLogStreams
aws 文档DescribeLogGroups
aws 文档
当将 $createGroup
参数设置为 false
时,可以省略 DescribeLogGroups
和 CreateLogGroup
权限
AWS IAM 策略完整 json 示例
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogGroups" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutRetentionPolicy" ], "Resource": "{LOG_GROUP_ARN}" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "{LOG_STREAM_1_ARN}", "{LOG_STREAM_2_ARN}" ] } ] }
问题
请随时 报告任何问题
贡献
请查看 此文档
乌克兰制造 🇺🇦