我有一个跟踪页面加载的日志记录功能。我想将它添加到我在 Symfony 中已有的每条路线中。
目前我是这样做的:
/**
* @Route("/test", name="test")
*/
public function testAction(Request $request)
{
/* Function to register pageload */
$this->get('statsd')->countMetric('visitor.'.$request->get('_route'));
return $this->render('default/indexFull.html.twig', array());
}
Run Code Online (Sandbox Code Playgroud)
我当然可以将这条线添加到每条路线,但由于我是 Symfony 的新手,我认为可能有更优雅的方法?
任何提示表示赞赏!
Symfony 在处理请求期间触发事件。这些事件之一是kernel.request事件,它在每个控制器之前执行。
请注意,路由器也会在此事件期间进行匹配,因此您需要确保您的侦听器在路由器侦听器之后执行。这可以通过使用优先级来完成。
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class CountMetricLogger
{
// ...
public function logVisit(GetResponseEvent $event)
{
$this->statsd->countMetric('visitor.'.$event->getRequest()->get('_route'));
}
}
Run Code Online (Sandbox Code Playgroud)
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class CountMetricLogger
{
// ...
public function logVisit(GetResponseEvent $event)
{
$this->statsd->countMetric('visitor.'.$event->getRequest()->get('_route'));
}
}
Run Code Online (Sandbox Code Playgroud)
更多信息:
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |