如何解决PHP日志与NewRelic集成问题?使用marketredesign/newrelic-monolog-enricher可以!

可以通过一下地址学习composer学习地址 在处理 php 应用的日志记录时,如何将这些日志有效地与 New Relic 平台集成是一个常见的挑战。我曾遇到过一个项目,日志记录系统与 New Relic 的集成出现了问题,导致无法有效地监控和分析应用的性能和错误。经过一番探索,我发现了 marketredesign/newrelic-monolog-enricher 这个库,它让我轻松地解决了这个问题。

这个库提供了一套组件,专门用于将 monolog 与 new relic logs 进行集成。它的核心功能包括三个部分:

  1. Handler:直接将 Monolog 的日志记录发送到 New Relic Logs。
  2. Processor:与 New Relic PHP 代理一起使用,可以为日志记录添加链接元数据,从而实现跨 New Relic 平台的数据关联。
  3. 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 项目。它不仅解决了我的实际问题,还为未来的项目提供了坚实的基础。

以上就是如何解决PHP日志与NewRelic集成问题?使用market

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享