如何在symfony中使用DBAL的setSQLLogger

时间:2015-01-07 19:18:21

标签: symfony doctrine-orm doctrine dbal

我能够以这种方式连接到symfony2中的doctrine:

# Doctrine Configuration
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                    driver:   "%database_driver%"
                    host:     "%database_host%"
                    port:     "%database_port%"
                    dbname:   "%database_name%"
                    user:     "%database_user%"
                    password: "%database_password%"
                    charset:  UTF8
                    mapping_types:
                                  enum: string

    orm:
        auto_generate_proxy_classes: false
        proxy_namespace: Proxies
        proxy_dir: Proxies
        default_entity_manager: default # The first defined is used if not set
        entity_managers:
            default:
                    connection: default
                    mappings: # Required
                             ApplicationUserBundle:
                                   type: annotation
                    class_metadata_factory_name: Doctrine\ORM\Mapping\ClassMetadataFactory
                    dql:
                        datetime_functions:
                        UNIX_TIMESTAMP: DoctrineExtensions\Query\Mysql\UnixTimestamp

现在我的问题是如何在上面的配置中使用它?

$ config-> setSQLLogger(new Doctrine \ DBAL \ Logging \ EchoSQLLogger());

我的意思是与this不同的另一种方式。因为这是一个$ config方法,我想应该可以在config.yml中使用它,但是如何?

  

块引用

1 个答案:

答案 0 :(得分:1)

您需要填写一些配置参数

doctrine.yaml配置文件中启用日志记录

doctrine:
    dbal:
        logging: true

services.yaml配置文件中设置记录器类

services:
    doctrine.dbal.logger:
        class: Doctrine\DBAL\Logging\EchoSQLLogger

在使用php bin/console cache:clear之前,请不要忘记清理Symfony缓存