newrelic / monolog-enricher
Monolog 组件以启用 New Relic 日志
Requires
- php: >=5.3.0
- monolog/monolog: ^2
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-08-26 23:36:30 UTC
README
Monolog 组件以启用 New Relic 日志
此包提供了将使用 Monolog 的 PHP 应用程序与 New Relic 日志 集成的所需组件。
存档通知
截至 2023 年 6 月,Monolog 组件以启用 New Relic 日志 项目已存档。New Relic PHP 代理(版本 10.3.0 及以上)支持自动转发 Monolog 2 和 Monolog 3 日志,是捕获 PHP 应用程序日志输出的推荐方法。有关自动日志转发的更多信息,请参阅 自动日志转发。
安装
组件
提供三个组件
-
一个
处理器
,它将日志记录直接从 Monolog 传递到 New Relic 日志。 -
一个
处理器
。可以与 New Relic PHP 代理 结合使用,为日志记录添加 链接元数据,允许您使用 日志上下文 来关联 New Relic 平台上的相关数据。 -
一个
格式化程序
,它扩展了 Monolog 提供的JsonFormatter
,将装饰后的日志记录从处理器
输出,以符合 New Relic 日志和其支持的插件所期望的 简化 JSON 主体结构。
有关如何将组件集成到应用程序中的更多信息,请参阅下面的 入门指南。
需求
- Monolog,版本 1 或 2。
- PHP 5.5.0 或更高版本,尽管推荐使用 当前支持的 PHP 版本。
要使用 处理器
,您还需要以下内容
- 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
意味着每个日志记录都会触发一个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日志支持的其他日志工具),则可能更喜欢使用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向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许可。
资源
- New Relic文档:使用我们平台的综合指导
- New Relic开发者:构建自定义可观察性应用程序的资源
- New Relic大学:针对New Relic各个层次用户的在线培训课程