echoes / monolog-enricher
Monolog 组件以启用 New Relic 日志
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:35:05 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 应用程序捕获日志输出的方式。 了解更多关于自动日志转发。
安装
组件
提供三个组件
-
A
处理器
,它将日志记录直接从 Monolog 传递到 New Relic 日志。 -
A
处理器
。此处理器可与 New Relic PHP 代理 结合使用,以使用 链接元数据 装饰日志记录,允许您使用 上下文日志 将日志记录与 New Relic 平台上的相关数据相关联。 -
A
格式化程序
,它扩展了 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 日志
使用此软件包的最简单方法是使用 处理器
和 处理器
将数据直接发送到 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 日志 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 日志 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 日志支持的另一款日志工具),则您可能更喜欢使用 处理器
和 格式化程序
将日志发送到该工具,而不是使用 处理器
将日志直接发送到 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文档。
贡献
截至2023年6月,启用New Relic Logs的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用户的在线培训