如何让Doctrine在Symfony2中记录查询

And*_*nes 8 php symfony doctrine-orm monolog

我是Symfony2的新手,我正在寻找一种方法将SQL查询(包括时间)记录到与我的应用程序其余部分相同的日志文件中.

从我可以从文档中确定,这应该都是开箱即用,但经过几个小时的尝试,我无法弄清楚我做错了什么.

config_dev.yml

monolog:
    handlers:
        doctrine:
            action_level: debug
            type: stream
            path: %kernel.logs_dir%/%kernel.environment%_doctrine.log
            channels: doctrine
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我根本没有生成日志文件.我的其他日志记录处理程序工作正常(此处未列出).

我想知道我在哪里出错了,但是这是否真的是正确的方法,或者我是否应该实现一个实现SQL Logger的新类,如下所述:http://vvv.tobiassjosten.net/symfony /测井学说查询功能于Symfony2的/

但是我不知道如何通过配置/服务插入它以使其在项目范围内应用(例如,我不想在每个Controller中调用它).

非常感谢您的帮助!

Ste*_*tev 15

如果您确实需要在生产中记录doctrine 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 
Run Code Online (Sandbox Code Playgroud)

http://symfony.com/doc/current/reference/configuration/doctrine.html

并配置monolog来记录教程,如文档中所述:http: //symfony.com/doc/current/cookbook/logging/channels_handlers.html

类似的问题可以在symfony 2.4中找到,无法在prod环境中获得学说渠道