tlshifat / amazoncloudwatchhandler
AWS CloudWatch Handler for Monolog library
1.0.0
2023-08-05 16:14 UTC
Requires
- php: ^8.1
- aws/aws-sdk-php: ^3.18
- monolog/monolog: ^3.3.1
Requires (Dev)
- phpunit/phpunit: ^8.5 || ^9.4
- squizlabs/php_codesniffer: ^3.5
Suggests
- maxbanton/dd: Minimalistic dump-and-die function for easy debugging
This package is auto-updated.
Last update: 2024-09-05 19:45:08 UTC
README
AWS CloudWatch Logs Handler for Monolog
Monolog日志库的处理器,用于将日志条目发送到AWS CloudWatch Logs服务。
在开始使用此库之前,建议您熟悉AWS CloudWatch服务的定价。
如果您觉得这个库很有用,请按★ 星标按钮。
免责声明
此库通过AWS PHP SDK使用AWS API,对并发请求有限制。这意味着在高并发或高负载应用程序中,它可能无法以最佳方式运行。请考虑使用其他解决方案,例如使用fluentd将日志重定向到stdout。
要求
- PHP ^7.3
- 具有适当权限的AWS账户(以下为权限列表)
特性
- 最多发送10000批日志,以避免速率超出错误
- 使用标签创建日志组
- AWS CloudWatch Logs延迟加载
- 适用于Web应用程序以及长时间运行的CLI守护进程和工作进程
安装
通过运行以下命令使用Composer安装最新版本:
$ composer require tlshifat/amazoncloudwatchhandler
基本用法
<?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}" ] } ] }
问题
请随时报告问题
贡献
请查看此文档
制作于吉大港