可以通過一下地址學習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 項目。它不僅解決了我的實際問題,還為未來的項目提供了堅實的基礎。