thiagoszbarros / newrelic-log
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-07-26 11:53:03 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
,将从处理器
接收到的装饰日志记录以 简化 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
意味着每个日志记录都会触发对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向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用户的在线培训课程