tlshifat/amazoncloudwatchhandler

AWS CloudWatch Handler for Monolog library

1.0.0 2023-08-05 16:14 UTC

This package is auto-updated.

Last update: 2024-09-05 19:45:08 UTC


README

Stand With Ukraine

AWS CloudWatch Logs Handler for Monolog

Actions Status Coverage Status License Version Downloads

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用户(推荐)或定义策略,请确保包括以下权限:

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

问题

请随时报告问题

贡献

请查看此文档

制作于吉大港