Warm tip: This article is reproduced from serverfault.com, please click

php-如何在Symfony2中获取Doctrine记录查询

(php - How to get Doctrine to log queries in Symfony2)

发布于 2015-04-06 11:53:00

我对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中都调用它)。

非常感谢你的帮助!

Questioner
Andy Raines
Viewed
0
2017-05-23 18:31:09

如果你确实确定需要在生产环境中记录准则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中找到一个类似的问题,无法在生产环境中获得该理论通道