如何让 Doctrine 在 Symfony2 中记录查询
How to get Doctrine to log queries in Symfony2
我是 Symfony2 的新手,我正在寻找一种方法将 SQL 查询(包括时间)记录到与我的应用程序的其余部分相同的日志文件中。
根据我从文档中可以确定的内容,这一切都应该开箱即用,但经过几个小时的尝试后,我无法弄清楚我做错了什么。
config_dev.yml
monolog:
handlers:
doctrine:
action_level: debug
type: stream
path: %kernel.logs_dir%/%kernel.environment%_doctrine.log
channels: doctrine
config.yml
# 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
我根本没有生成任何日志文件。我的其他日志记录处理程序工作正常(此处未列出)。
我想知道我哪里出了问题,但也想知道这是否真的是正确的方法,或者我是否应该实现一个新的 class 来实现 SQL 记录器,如前所述这里:http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/
但我不知道如何通过 configuration/services 插入它以使其在整个项目范围内应用(例如,我不想在每个控制器中都调用它) .
非常感谢您的帮助!
如果您确实确定需要在生产环境中记录 doctrine 2 查询,那么您可以在 doctrine 的配置中进行设置。
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
并配置 monolog 以记录教义,如文档中所述:
http://symfony.com/doc/current/cookbook/logging/channels_handlers.html
可以在 symfony 2.4 can't get the doctrine channel in prod environment
找到类似的问题
配置的完整示例:
config/packages/dev/doctrine.yaml
:
doctrine:
dbal:
connections:
default:
logging: true
如果您仍然没有 monolog,请安装它:composer require symfony/monolog-bundle
您应该开始在日志文件中获取所有 SQL 查询:var/log/dev.log
我是 Symfony2 的新手,我正在寻找一种方法将 SQL 查询(包括时间)记录到与我的应用程序的其余部分相同的日志文件中。
根据我从文档中可以确定的内容,这一切都应该开箱即用,但经过几个小时的尝试后,我无法弄清楚我做错了什么。
config_dev.yml
monolog:
handlers:
doctrine:
action_level: debug
type: stream
path: %kernel.logs_dir%/%kernel.environment%_doctrine.log
channels: doctrine
config.yml
# 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
我根本没有生成任何日志文件。我的其他日志记录处理程序工作正常(此处未列出)。
我想知道我哪里出了问题,但也想知道这是否真的是正确的方法,或者我是否应该实现一个新的 class 来实现 SQL 记录器,如前所述这里:http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/
但我不知道如何通过 configuration/services 插入它以使其在整个项目范围内应用(例如,我不想在每个控制器中都调用它) .
非常感谢您的帮助!
如果您确实确定需要在生产环境中记录 doctrine 2 查询,那么您可以在 doctrine 的配置中进行设置。
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
并配置 monolog 以记录教义,如文档中所述: http://symfony.com/doc/current/cookbook/logging/channels_handlers.html
可以在 symfony 2.4 can't get the doctrine channel in prod environment
找到类似的问题配置的完整示例:
config/packages/dev/doctrine.yaml
:
doctrine:
dbal:
connections:
default:
logging: true
如果您仍然没有 monolog,请安装它:composer require symfony/monolog-bundle
您应该开始在日志文件中获取所有 SQL 查询:var/log/dev.log