AWS CloudWatch Handler for Monolog 库

1.3 2023-04-19 17:06 UTC

This package is auto-updated.

Last update: 2024-09-19 19:58:18 UTC


README

Stand With Ukraine

AWS CloudWatch 日志处理程序 for Monolog

Actions Status Coverage Status License Version Downloads

用于将日志条目发送到 AWS CloudWatch 日志 服务的 PHP 日志库 Monolog 的处理程序。

在开始使用此库之前,建议您熟悉 AWS CloudWatch 服务的 定价

如果您觉得这个库很有用,请按下 ★ 星标 按钮。

免责声明

此库通过 AWS PHP SDK 使用 AWS API,该 SDK 对并发请求有限制。这意味着在高并发或高负载的应用程序中,它可能无法以最佳方式运行。请考虑使用其他解决方案,例如通过 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 用户程序(推荐)或想要定义策略,请确保以下权限包括在内

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

问题

请随时 报告任何问题

贡献

请查看 此文档

乌克兰制造 🇺🇦