mannv-echoes / monolog-enricher
启用 New Relic 日志的 Monolog 组件
Requires
- php: >=5.3.0
- monolog/monolog: ^3
Requires (Dev)
- phpunit/phpunit: ^4
- squizlabs/php_codesniffer: >=3.5
Suggests
- ext-newrelic: Adds support for viewing logs in context within the New Relic UI
This package is auto-updated.
Last update: 2024-01-17 04:31:05 UTC
README
启用 New Relic 日志的 Monolog 组件
此包提供了将 PHP 应用程序与 Monolog 集成到 New Relic 日志 所需的组件。
存档通知
截至 2023 年 6 月,"启用 New Relic 日志的 Monolog 组件" 项目已存档。New Relic PHP 代理(版本 10.3.0 及更高版本)自动支持 Monolog 2 和 Monolog 3 日志转发,并建议使用它来捕获 PHP 应用程序的日志输出。有关自动日志转发的更多信息,请参阅 自动日志转发。
安装
组件
提供了三个组件
-
一个
Handler
,它将日志记录直接从 Monolog 传输到 New Relic 日志。 -
一个
Processor
。这可以与 New Relic PHP 代理 结合使用,以用 链接元数据 装饰日志记录,这使得您可以使用 上下文日志 将日志记录与 New Relic 平台上的相关数据相关联。 -
一个
Formatter
,它扩展了 Monolog 提供的JsonFormatter
,从Processor
获取装饰后的日志记录,并以 简化 JSON 主体结构 和 支持的插件 期望的格式输出。
有关如何将组件集成到您的应用程序中的更多详细信息,请参阅下面的 入门指南。
要求
- Monolog,版本 1 或 2。
- PHP 5.5.0 或更高版本,尽管建议使用当前支持的 PHP 版本。
要使用 Handler
,您还需要以下内容
- PHP 的 curl 扩展。
要启用 上下文日志 功能,您还需要
- New Relic PHP 代理,版本 9.3 或更高版本。
安装
此软件包可在 Packagist 上找到,并应使用 Composer 安装
composer require newrelic/monolog-enricher
入门
直接将日志发送到 New Relic 日志
使用此软件包最简单的方法是使用 Processor
和 Handler
将数据直接发送到 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
意味着每个日志记录都会向 New Relic 日志 API 发送 HTTP 请求。如果记录了大量日志,这可能会增加您应用程序的负载。
类似于大多数内置的 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 日志支持的另一个日志工具),则可能更喜欢使用 Processor
和 Formatter
将日志发送到该工具,而不是使用 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向我们报告。
向所有贡献者,我们表示感谢!没有你们的贡献,这个项目今天不会是现在这个样子。
设置开发环境
此项目的开发依赖关系由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地址和电子邮件地址。
如需更多信息,请参阅新睿仕通用数据隐私声明。
许可
newrelic-monolog-logenricher-php
遵循Apache 2.0许可。