kirubha7 / cloudwatch-logs-laravel
Laravel Cloudwatch Logs 包
v1.0
2022-09-13 16:52 UTC
Requires
- php: ^7.2 || ^8
- aws/aws-sdk-php: ^3.18
README
在使用此库之前,建议您了解 AWS CloudWatch 服务的定价。
如果您觉得这个库很有用,请按★ 星标按钮。
免责声明
此库通过 AWS PHP SDK 使用 AWS API,其对并发请求有限制。这意味着在高并发或高负载的应用中,它可能无法以最佳方式运行。请考虑使用其他解决方案,例如通过 fluentd 将日志重定向到 stdout。
要求
- PHP ^7.2
- aws/aws-sdk-php": "^3.18
- 拥有适当权限的 AWS 账户(见以下权限列表)
特性
- 创建日志组
- 创建日志流
- 检查日志组是否存在
- 检查日志流是否存在
- 将日志发送到云监控日志流
- AWS CloudWatch Logs 懒加载
- 适用于 Web 应用程序、长期运行的 CLI 守护进程和工作进程
安装
使用以下命令通过 Composer 安装最新版本:
$ composer require kirubha7/cloudwatch-logs-laravel
基本用法
<?php use kirubha7\CloudwatchLogsLaravel\Cloudwatchlogs; use Aws\CloudWatchLogs\CloudWatchLogsClient; $client = [ 'region' => 'AWS_REGION', 'version' => '2014-03-28', 'credentials' => [ 'key' => 'AWS_KEY', 'secret' => 'AWS_SECRET', ] ]; $client = new CloudWatchLogsClient($client);//Intialize AWS Clinet $logs = new Cloudwatchlogs($client); try{ //YOUR CONTEXT $datas = [ 'test' => 'package', 'version' => 1, ]; $retentionDays = 30;//By Default retention days upto 14 days /** Generally putLog function returns associate array If Logs sends successfully => ['status' => true,'message' => 'Log sended successfully'] If Logs failed to sends => ['status' => false,'error' => 'EXCEPTION_MESSAGE'] */ $res = $logs->putLog('YOUR_LOGGROUP_NAME','YOUR_LOGSTREAM_NAME',$retentionDays,$datas); if($res['status']){//If log sends successfully echo $res['message']; }else{//If log fails to sends echo $res['error']; } }catch(\Exception $e){ echo $e->getMessage(); }
检查日志组是否存在
<?php /** Generally checkLogGroupExists function returns associate array If Logs group exists => ['status' => true,'message' => 'Log Group Exists'] If Logs group not exists => ['status' => false,'error' => 'EXCEPTION_MESSAGE'] */ $res = $logs->checkLogGroupExists('YOUR_LOG_GROUP_NAME'); if($res['status']){//If log group is exists echo $res['message']; }else{//If log group not exists echo $res['error']; } ?>
检查日志流是否存在
<?php /** Generally checkLogStreamExists function returns associate array If Logs stream exists => ['status' => true,'message' => 'Log Stream Exists'] If Logs stream not exists => ['status' => false,'error' => 'EXCEPTION_MESSAGE'] */ $res = $logs->checkLogStreamExists('YOUR_LOG_STREAM_NAME'); if($res['status']){//If log stream is exists echo $res['message']; }else{//If log stream not exists echo $res['error']; } ?>
创建日志组
<?php /** Generally createLogGroup function returns associate array If Logs group created successfully => ['status' => true,'message' => 'Log Group Created Successfully'] If Logs group fails to create => ['status' => false,'error' => 'EXCEPTION_MESSAGE'] */ $res = $logs->createLogGroup('YOUR_LOG_GROUP_NAME'); if($res['status']){//If log group created successfully echo $res['message']; }else{//If log group fails to create echo $res['error']; } ?>
创建日志流
<?php /** Generally createLogStream function returns associate array If Logs stream created successfully => ['status' => true,'message' => 'Log Stream Created Successfully'] If Logs stream fails to create => ['status' => false,'error' => 'EXCEPTION_MESSAGE'] */ $res = $logs->createLogStream('YOUR_LOG_GROUP_NAME','YOUR_LOG_STREAM_NAME'); if($res['status']){//If log stream created successfully echo $res['message']; }else{//If log stream fails to create echo $res['error']; } ?>
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}" ] } ] }
问题
欢迎报告任何问题
印度制造