alexrili / lumen-newrelic
Lumen 框架的 New Relic 仪器
v3.0
2019-10-24 23:09 UTC
Requires
- php: ^7.2
- illuminate/support: ^6.0
- intouch/newrelic: ^1.0
Requires (Dev)
- laravel/lumen-framework: ^6.0
- phpunit/phpunit: ^7.5
README
此库为 Lumen 框架提供 New Relic 仪器。安装后,此库将确保您的交易得到适当的命名,并且您的异常在 New Relic 中得到适当的记录。
需求
使用
安装
运行以下命令通过 Composer 安装此包
composer require nordsoftware/lumen-newrelic
引导
在 bootstrap/app.php
中,将注册异常处理器的 $app->singleton()
调用替换为以下代码片段
$app->instance( Illuminate\Contracts\Debug\ExceptionHandler::class, new Nord\Lumen\ChainedExceptionHandler\ChainedExceptionHandler( new \App\Exceptions\Handler(), [new Nord\Lumen\NewRelic\NewRelicExceptionHandler()] ) );
这将确保异常被正确地报告给 New Relic。
现在,添加中间件
$app->middleware([ ... Nord\Lumen\NewRelic\NewRelicMiddleware::class, ]);
这将确保交易得到正确的命名。
最后,注册服务提供者
$app->register(Nord\Lumen\NewRelic\NewRelicServiceProvider::class);
忽略某些异常
默认情况下,异常处理器会忽略类型为 Symfony\Component\HttpKernel\Exception\NotFoundHttpException
的异常。您可以通过向异常处理器的构造函数传递一个数组来自定义要忽略的异常列表
$exceptionHandler = new Nord\Lumen\NewRelic\NewRelicExceptionHandler([ FooException::class, BarException::class, ]);
如果您不希望忽略任何异常,请向构造函数传递一个空数组。
自定义交易名称
默认情况下,交易名称将使用分配给路由的 controller@action
。如果这失败,它将使用路由的名称。如果没有定义名称,它将回退到 index.php
。
如果这不满足您的需求,则扩展 Nord\Lumen\NewRelic\NewRelicMiddleware
类并重写 getTransactionName()
方法,然后注册该中间件类。
标记交易为后台作业
如果您有用于钩子、通知或其他长时间运行的后台任务专用路由,可以将 Nord\Lumen\NewRelic\NewRelicBackgroundJobMiddleware
应用于相关路由。这将把交易标记为后台作业,这样长时间的处理时间就不会歪曲您的响应时间图。
运行测试
克隆项目并运行以下命令安装其依赖项
composer install
运行以下命令运行测试套件
vendor/bin/phpunit
许可证
见 LICENSE