newrelic/monolog-enricher

此包已被废弃,不再维护。未建议替代包。

Monolog 组件以启用 New Relic 日志

2.0.0 2021-03-15 16:46 UTC

README

Archived header

Monolog 组件以启用 New Relic 日志

Latest Stable Version Latest Unstable Version CircleCI License

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

存档通知

截至 2023 年 6 月Monolog 组件以启用 New Relic 日志 项目已存档。New Relic PHP 代理(版本 10.3.0 及以上)支持自动转发 Monolog 2 和 Monolog 3 日志,是捕获 PHP 应用程序日志输出的推荐方法。有关自动日志转发的更多信息,请参阅 自动日志转发

安装

组件

提供三个组件

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

  2. 一个 处理器。可以与 New Relic PHP 代理 结合使用,为日志记录添加 链接元数据,允许您使用 日志上下文 来关联 New Relic 平台上的相关数据。

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

有关如何将组件集成到应用程序中的更多信息,请参阅下面的 入门指南

需求

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

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

安装

此软件包可在Packagist上获取[点击访问],应使用Composer进行安装。

composer require newrelic/monolog-enricher

入门指南

直接将日志发送到New Relic日志

使用此软件包最简单的方法是使用ProcessorHandler直接将数据发送到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代理,则Handler应能够从PHP代理中检测到许可证密钥,而Processor将自动将链接元数据添加到日志记录中。

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

选择性发送日志记录

默认情况下,使用Handler意味着每个日志记录都会触发一个HTTP请求到New Relic日志API。如果记录了大量的日志记录,这可能会给您的应用程序增加开销。

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

<?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!');

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

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

<?php
// ...

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

与现有日志工具集成

如果您已经配置了一个日志工具将日志发送到New Relic日志(例如Fluentd、AWS CloudWatch或New Relic日志支持的其他日志工具),则可能更喜欢使用ProcessorFormatter将日志发送到该工具,而不是使用Handler直接将日志发送到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日志的更多信息,可以在New Relic文档中找到。

贡献

截至2023年6月,启用New Relic日志的Monolog组件项目已归档,仅可供克隆。我们鼓励您在其分支中尝试使用它,但请注意,目前没有维护团队或支持。

关于漏洞的说明

如我们安全策略中所述,New Relic致力于保护客户及其数据的隐私和安全。我们认为,通过安全研究人员进行协调披露并与安全社区合作是实现我们安全目标的重要手段。

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

对所有贡献者,我们表示衷心的感谢!没有您的贡献,这个项目就不会成为今天的模样。

设置开发环境

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

composer install

编码规范

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

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

composer coding-standard-check

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

composer coding-standard-fix

在提交修复时,请确保已将对应条目添加到变更日志中。

测试

运行单元测试

本项目使用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,我们非常重视您的隐私和信息安全,并致力于保护您的信息。我们必须强调,不要在公共论坛上共享个人数据的重要性,并要求所有用户清理日志和诊断信息,以删除个人、专有或其他敏感信息。

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

有关更多信息,请查阅New Relic的一般数据隐私政策

许可

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

资源