我对Symfony2相当陌生,我正在寻找一种将SQL查询(包括计时)记录到与应用程序其余部分相同的日志文件中的方法。
从我可以从文档中确定的内容来看,这应该可以立即使用,但是经过几个小时的尝试,我仍然无法弄清自己在做什么错。
config_dev.yml
monolog:
handlers:
doctrine:
action_level: debug
type: stream
path: %kernel.logs_dir%/%kernel.environment%_doctrine.log
channels: doctrine
配置文件
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
logging: true
profiling: true
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
我根本没有生成任何日志文件。我的其他日志记录处理程序工作正常(此处未列出)。
我想知道这里哪里出了问题,还想知道这是否是正确的方法,还是我应该实现一个实现SQL Logger的新类,如此处所述:http : //vvv.tobiassjosten.net/symfony / symfony2 /中的日志记录学说2 /
但是我不知道如何通过配置/服务将其插入以使其在整个项目中应用(例如,我不想在每个Controller中都调用它)。
非常感谢你的帮助!
如果你确实确定需要在生产环境中记录准则2的查询,则可以在准则的配置中进行设置。
connections:
# A collection of different named connections (e.g. default, conn2, etc)
default:
# when true, queries are logged to a "doctrine" monolog channel
logging: true
http://symfony.com/doc/current/reference/configuration/doctrine.html
并配置独白以记录文档中所述的学说:http : //symfony.com/doc/current/cookbook/logging/channels_handlers.html
可以在symfony 2.4中找到一个类似的问题,无法在生产环境中获得该理论通道
很好,谢谢。我完全想念为什么这不起作用(基本上在另一个配置文件中有一个替代),但这绝对是正确的答案。
这个问题来自2015年,适用于Symfony2。当然,对于2020年,对于Symfony 5来说,答案不起作用。但是解决方案很简单。请参阅“理论”->“ dbal”下的“日志记录”键,可以将其设置为true以始终启用日志记录。symfony.com/doc/current/reference/configuration/doctrine.html