web-dev-qa-db-ja.com

Symfony2でクエリをログに記録する方法Doctrine

私は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

ログファイルがまったく生成されません。私の他のロギングハンドラは正常に動作します(ここにはリストされていません)。

ここでどこが間違っているのか、そしてこれが本当に正しいアプローチであるのか、またはここで述べたように、SQLロガーを実装する新しいクラスを実装する必要があるのか​​も疑問に思っています: http://vvv.tobiassjosten .net/symfony/logging-doctrine-queries-in-symfony2 /

しかし、プロジェクト全体に適用するために、構成/サービスを介してプラグインする方法がわかりません(たとえば、すべてのコントローラーで呼び出す必要はありません)。

助けてくれてありがとう!

9
Andy Raines

実際に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

そして、モノログをログに設定するdoctrineドキュメントで説明されているように: http://symfony.com/doc/current/cookbook/logging/channels_handlers.html

同様の問題は symfony 2.4がdoctrine prod環境のチャネル)を取得できない で見つけることができます

13
Stev