kirubha7/cloudwatch-logs-laravel

Laravel Cloudwatch Logs 包

v1.0 2022-09-13 16:52 UTC

This package is auto-updated.

Last update: 2024-09-13 21:18:25 UTC


README

Version Downloads

在使用此库之前,建议您了解 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 用户(推荐)或想要定义策略,请确保包括以下权限:

  1. CreateLogGroup aws 文档
  2. CreateLogStream aws 文档
  3. PutLogEvents aws 文档
  4. PutRetentionPolicy aws 文档
  5. DescribeLogStreams aws 文档
  6. DescribeLogGroups aws 文档

当将 $createGroup 参数设置为 false 时,可以省略 DescribeLogGroupsCreateLogGroup 权限

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}"
            ]
        }
    ]
}

问题

欢迎报告任何问题

印度制造