可以通过一下地址学习composer:学习地址 在处理 php 应用的日志记录时,如何将这些日志有效地与 New Relic 平台集成是一个常见的挑战。我曾遇到过一个项目,日志记录系统与 New Relic 的集成出现了问题,导致无法有效地监控和分析应用的性能和错误。经过一番探索,我发现了 marketredesign/newrelic-monolog-enricher 这个库,它让我轻松地解决了这个问题。
这个库提供了一套组件,专门用于将 monolog 与 new relic logs 进行集成。它的核心功能包括三个部分:
- Handler:直接将 Monolog 的日志记录发送到 New Relic Logs。
- Processor:与 New Relic PHP 代理一起使用,可以为日志记录添加链接元数据,从而实现跨 New Relic 平台的数据关联。
- Formatter:扩展了 Monolog 提供的 jsonFormatter,格式化处理后的日志记录,使其符合 New Relic Logs 及其支持的插件所期望的 JSON 结构。
安装这个库非常简单,只需使用 composer:
composer require newrelic/monolog-enricher
以下是一个简单的例子,展示如何使用 Processor 和 Handler 将日志直接发送到 New Relic Logs:
use MonologLogger; use NewRelicMonologEnricher{Handler, Processor}; $log = new Logger('log'); $log->pushProcessor(new Processor); $log->pushHandler(new Handler); $log->info('Hello, world!');
如果你没有使用 New Relic APM,可以跳过添加 Processor,因为 Handler 可以独立运行。
为了优化性能,你可以选择性地发送日志记录,或者使用 Monolog 的 BufferHandler 来批量处理日志记录:
立即学习“PHP免费学习笔记(深入)”;
use MonologHandlerBufferHandler; use MonologLogger; use NewRelicMonologEnricher{Handler, Processor}; $log = new Logger('log'); $log->pushProcessor(new Processor); $log->pushHandler(new BufferHandler(new Handler)); $log->info('Hello, world!');
如果你已经配置了其他日志工具(如 Fluentd 或 AWS CloudWatch)来发送日志到 New Relic Logs,你可以使用 Processor 和 Formatter 来与这些工具集成:
use MonologHandlerStreamHandler; use MonologLogger; use NewRelicMonologEnricher{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!');
使用 marketredesign/newrelic-monolog-enricher 库后,我的项目成功地将日志与 New Relic 平台集成,极大地提高了监控和分析的效率。这个库不仅简化了集成过程,还提供了灵活的配置选项,帮助我更好地管理和优化日志记录。
总的来说,marketredesign/newrelic-monolog-enricher 是一个非常实用的工具,适用于需要将 Monolog 日志与 New Relic 平台进行集成的 PHP 项目。它不仅解决了我的实际问题,还为未来的项目提供了坚实的基础。