Symfony CMF 动态路由器 "was not able to match" 日志
Symfony CMF Dynamic router "was not able to match" logs
我有一个使用 Symfony CMF routing bundle 1.3 的 Symfony 2.6 应用程序,我们在其中使用普通 symfony 路由和自定义商店的动态路由的组合(除其他外,下面的示例重点介绍了我们的一个动态路由器)。
问题是我们收到无穷无尽的日志,关于路由器在工作正常时无法匹配动态路由。
最常见的条目是:
Router Symfony\Bundle\FrameworkBundle\Routing\Router was not able to match, message ""
我们偶尔会看到
Router Symfony\Cmf\Bundle\RoutingBundle\Routing\DynamicRouter was not able to match, message ""
有没有办法禁用这些日志或更改我的动态路由器 configuration/setup 以便这些错误仅在路由实际失败时出现。
这是我的 config/setup:
# app/config/config.yml
cmf_routing:
chain:
routers_by_id:
router.default: 32
cmf_routing.dynamic_router: 30
dynamic:
enabled: true
route_provider_service_id: store_router
以及基于
的实际动态路由器
// StoreBundle/Router/StoreRouter.php
<?php
/**
* @DI\Service("store_router")
*/
class StoreRouter implements RouteProviderInterface
{
protected $em;
/**
* @DI\InjectParams({
* "em" = @DI\Inject("doctrine.orm.entity_manager")
* })
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
/**
* @param Request $request
* @return RouteCollection
*/
public function getRouteCollectionForRequest(Request $request)
{
$collection = new RouteCollection();
$store = $this->em->getRepository('StoreBundle:Store')->findOneBySlug(substr($request->getPathInfo(), 1), $request->get('key', null));
// no store found, return an empty collection
if (empty($store)) {
return $collection;
}
$route = new Route(
'/' . $store->getSlug(),
[
'_controller' => 'StoreBundle:Store:view',
'slug' => $stote->getSlug()
]
);
$collection->add($store->getSlug(), $route);
return $collection;
}
public function getRouteByName($name, $params = [])
{
}
public function getRoutesByNames($names)
{
}
}
如果有更好的使用动态路由的方法,我很想听听:)
日志条目在 "debug" 级别创建。您可以将记录器的最低级别设置得更高。如果您需要其他调试日志,您可以编写一个 CompilerPass,删除 symfony_cmf.router 服务上的记录器参数。
我同意配置日志级别是有意义的,使用 false
选项可以完全禁用日志记录。如果你想要这个,我很乐意审查并合并 Routing 组件上的代码请求和 RoutingBundle 以公开配置。
我有一个使用 Symfony CMF routing bundle 1.3 的 Symfony 2.6 应用程序,我们在其中使用普通 symfony 路由和自定义商店的动态路由的组合(除其他外,下面的示例重点介绍了我们的一个动态路由器)。
问题是我们收到无穷无尽的日志,关于路由器在工作正常时无法匹配动态路由。
最常见的条目是:
Router Symfony\Bundle\FrameworkBundle\Routing\Router was not able to match, message ""
我们偶尔会看到
Router Symfony\Cmf\Bundle\RoutingBundle\Routing\DynamicRouter was not able to match, message ""
有没有办法禁用这些日志或更改我的动态路由器 configuration/setup 以便这些错误仅在路由实际失败时出现。
这是我的 config/setup:
# app/config/config.yml
cmf_routing:
chain:
routers_by_id:
router.default: 32
cmf_routing.dynamic_router: 30
dynamic:
enabled: true
route_provider_service_id: store_router
以及基于
的实际动态路由器// StoreBundle/Router/StoreRouter.php
<?php
/**
* @DI\Service("store_router")
*/
class StoreRouter implements RouteProviderInterface
{
protected $em;
/**
* @DI\InjectParams({
* "em" = @DI\Inject("doctrine.orm.entity_manager")
* })
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
/**
* @param Request $request
* @return RouteCollection
*/
public function getRouteCollectionForRequest(Request $request)
{
$collection = new RouteCollection();
$store = $this->em->getRepository('StoreBundle:Store')->findOneBySlug(substr($request->getPathInfo(), 1), $request->get('key', null));
// no store found, return an empty collection
if (empty($store)) {
return $collection;
}
$route = new Route(
'/' . $store->getSlug(),
[
'_controller' => 'StoreBundle:Store:view',
'slug' => $stote->getSlug()
]
);
$collection->add($store->getSlug(), $route);
return $collection;
}
public function getRouteByName($name, $params = [])
{
}
public function getRoutesByNames($names)
{
}
}
如果有更好的使用动态路由的方法,我很想听听:)
日志条目在 "debug" 级别创建。您可以将记录器的最低级别设置得更高。如果您需要其他调试日志,您可以编写一个 CompilerPass,删除 symfony_cmf.router 服务上的记录器参数。
我同意配置日志级别是有意义的,使用 false
选项可以完全禁用日志记录。如果你想要这个,我很乐意审查并合并 Routing 组件上的代码请求和 RoutingBundle 以公开配置。