marketredesign/newrelic-monolog-enricher

Monolog 组件,以启用 New Relic 日志

v3.0.0 2023-04-07 13:57 UTC

This package is auto-updated.

Last update: 2024-09-07 17:13:46 UTC


README

Community Plus header

Monolog 组件,以启用 New Relic 日志

Latest Stable Version Latest Unstable Version CircleCI License

此包提供所需的组件,以便使用 Monolog 将 PHP 应用程序与 New Relic 日志 集成。

安装

组件

提供了三个组件

  1. 一个 处理器,它将日志记录直接从 Monolog 传递到 New Relic 日志。

  2. 一个 处理器。这可以与 New Relic PHP 代理 结合使用,以使用 链接元数据 装饰日志记录,这使得您可以使用 上下文日志 将日志记录与 New Relic 平台上的相关数据关联起来。

  3. 一个 格式化程序,它扩展了 Monolog 提供的 JsonFormatter,以将装饰过的日志记录从 处理器 中取出,并以 New Relic 日志和其支持的插件所期望的 简化 JSON 主体结构 输出。

有关如何将这些组件与您的应用程序集成的更多详细信息,请参阅下面的 入门指南

要求

  • Monolog,版本 1 或 2。
  • PHP 5.5.0 或更高版本,尽管强烈推荐使用当前支持的 PHP 版本。

要使用 处理器,您还需要以下内容

要启用 上下文日志 功能,您还需要

安装

此包可在 Packagist 上找到,并应使用 Composer 进行安装。

composer require newrelic/monolog-enricher

入门指南

直接向 New Relic 日志发送日志

使用此包最简单的方法是使用 处理器处理器 直接将数据发送到 New Relic 日志。

<?php

use Monolog\Logger;
use NewRelic\Monolog\Enricher\{Handler, Processor};

$log = new Logger('log');
$log->pushProcessor(new Processor);
$log->pushHandler(new Handler);

$log->info('Hello, world!');

如果已安装 New Relic PHP 代理,则 处理器 应该能够从 PHP 代理检测到 许可证密钥,并且 处理器 将自动将链接元数据添加到日志记录。

如果您不使用New Relic APM,可以跳过推送处理器:处理器可以独立运行。

选择性发送日志记录

默认情况下,使用处理器意味着每个日志记录都会向New Relic Logs API发起HTTP请求。如果记录的数量很大,这可能会给您的应用程序增加开销。

与大多数内置的Monolog处理器一样,处理器类允许指定一个最小日志级别:低于指定级别的日志记录将不会发送到New Relic。因此,如果您不想看到低于WARNING级别的日志,可以按以下方式修改处理器的实例化:

<?php
// ...

$log->pushHandler(new Handler(Logger::WARNING));

缓冲日志记录以提高性能

避免为每条发送的日志消息发起HTTP请求的另一种方法是使用Monolog的内置BufferHandler来批量处理日志消息,并在请求结束时一次性发送

<?php

use Monolog\Handler\BufferHandler;
use Monolog\Logger;
use NewRelic\Monolog\Enricher\{Handler, Processor};

$log = new Logger('log');
$log->pushProcessor(new Processor);
$log->pushHandler(new BufferHandler(new Handler));

$log->info('Hello, world!');

手动指定许可证密钥和/或主机

处理器类提供了设置将要使用的许可证密钥或New Relic Log API主机的功能。如果您未安装New Relic PHP代理,或者您希望将日志记录到不同的账户或区域,这可能很有用。

<?php
// ...

$handler = new Handler;
$handler->setHost('log-api.eu.newrelic.com');
$handler->setLicenseKey('0123456789abcdef0123456789abcdef01234567');
$log->pushHandler($handler);

与现有日志工具集成

如果您已经配置了一个日志工具(如Fluentd、AWS CloudWatch或New Relic Logs支持的另一个日志工具)以将日志发送到New Relic Logs,那么您可能更喜欢使用处理器格式化器将日志发送到该工具,而不是使用处理器直接将日志发送到New Relic。

例如,如果您的日志工具配置为从stderr捕获NDJSON,则可以按以下方式配置记录器

<?php

use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use NewRelic\Monolog\Enricher\{Formatter, Processor};

$log = new Logger('log');
$log->pushProcessor(new Processor);

$handler = new StreamHandler('php://stderr');
$handler->setFormatter(new Formatter);
$log->pushHandler($handler);

$log->info('Hello, world!');

有关如何配置您的日志工具以将日志发送到New Relic Logs的更多信息,请参阅New Relic文档

测试

运行单元测试

此项目使用PHPUnit 4,这是最后一个支持PHP 5.3的PHPUnit版本。

您可以通过Composer运行测试套件

composer test

如果phpdbg可用,您还可以在运行测试套件时生成代码覆盖率报告

composer test-coverage

这将把HTML覆盖率报告写入到coverage/index.html

运行集成测试

也可以通过Composer运行针对Monolog 1和2的集成测试套件

composer integration

有关这些测试的更多信息,请参阅tests/integration README

支持

如果您需要有关New Relic产品的帮助,您可以通过多个支持渠道获得帮助。

如果问题已确认是bug或功能请求,请提交GitHub问题。

支持渠道

隐私

在New Relic,我们非常重视您的隐私和信息安全,并致力于保护您的信息。我们必须强调不要在公开论坛分享个人数据的重要性,并请所有用户清理日志和诊断信息中的敏感信息,无论是否为个人、专有或其它。

我们定义“个人数据”为与已识别或可识别的个人相关的任何信息,例如,您的姓名、电话号码、邮政编码或邮编、设备ID、IP地址和电子邮件地址。

如需更多信息,请查阅New Relic的一般数据隐私声明

贡献

我们鼓励您为改进newrelic-monolog-logenricher-php做出贡献!请记住,在提交拉取请求时,您需要通过CLA-Assistant点击签署CLA。您只需在每个项目上签署一次CLA。

如果您有任何问题,或需要执行我们的公司CLA(如果您的贡献代表公司,则必须执行),请发送电子邮件至opensource@newrelic.com

关于漏洞的说明

如我们在安全策略中所注明的,New Relic致力于保护我们客户及其数据的安全。我们相信,通过安全研究人员的协调披露并与安全社区合作是实现我们的安全目标的重要手段。

如果您认为您在这个项目或New Relic的任何产品或网站上发现了安全漏洞,我们欢迎并非常感谢您通过HackerOne向New Relic报告。

如果您想为此项目做出贡献,请查阅这些指南

所有贡献者,我们表示衷心感谢!没有您的贡献,这个项目就不会成为今天的模样。我们还设立了一个社区项目页面,专门用于New Relic日志的Monolog

设置开发环境

此项目的开发依赖由Composer管理,应通过Composer安装

composer install

编码标准

此项目遵循PSR-12,软行长度限制为80个字符。

PHP_CodeSniffer用于确保一致性。您可以通过以下Composer脚本来运行phpcs检查当前代码

composer coding-standard-check

或者,您可以使用phpcbf自动修复大多数错误

composer coding-standard-fix

提交修复时,请确保在变更日志中添加相应的条目。

许可

newrelic-monolog-logenricher-php采用Apache 2.0许可证。