【问题标题】:How to stop Symfony from logging Doctrine's sql queries?如何阻止 Symfony 记录 Doctrine 的 sql 查询?
【发布时间】:2015-01-28 11:41:06
【问题描述】:

我有一个奇怪的问题,当我检查我的app/log/dev.log 时,我可以看到我在dev.log 中的几乎所有查询都被实时登录:

[2015-01-27 06:57:22] doctrine.DEBUG: SELECT t0.username A ....
[2015-01-27 06:57:23] doctrine.DEBUG: SELECT t0.username A ...
[2015-01-27 06:57:23] doctrine.DEBUG: SELECT s0_.id ......

我不知道为什么会发生这种情况,因为当我在config.yml 中查看独白时,我也在生产模式下运行该站点,这就是我所看到的:

monolog:
    handlers:
        pictures:
            type: stream
            path: %kernel.logs_dir%/pictures_%kernel.environment%.log
            level: info
        instagram:
            type: stream
            path: %kernel.logs_dir%/instagram_%kernel.environment%.log
            level: info

这是我的 config_dev.yml 的样子:

imports:
    - { resource: config.yml }

framework:
    router:   { resource: "%kernel.root_dir%/config/routing_dev.yml" }
    profiler: { only_exceptions: false }

web_profiler:
    toolbar: true
    intercept_redirects: false

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
        firephp:
            type:  firephp
            level: info

assetic:
    use_controller: false

hip_mandrill:
    disable_delivery: true    

知道这是怎么发生的吗?

【问题讨论】:

    标签: php symfony doctrine-orm


    【解决方案1】:

    您应该在生产服务器上使用prod env。在prod env 中,默认情况下禁用了日志记录。

    但如果您想完全禁用日志记录(在所有环境中),您需要像这样设置 config.yml

    doctrine:
        dbal:
            connections:
                conn1:
                    driver: ...
                    ...
                    logging: false
                    profiling: false
    

    参考:https://symfony.com/doc/current/bundles/DoctrineBundle/configuration.html

    【讨论】:

    • 我想我在生产服务器上使用 prod 环境。我不想禁用所有日志记录,只是在 prod 中。如果不是,我该如何检查是否是这种情况
    • prod 环境中,您将在app/logs/prod.log 获得日志
    • 我明白,但是似乎没有人访问开发环境,但日志总是去那里..恐怕 prod 环境并没有真正使用 prod 标志......所以如何我要检查吗
    • 正如我之前写的。您实际上正在使用prod env。您可以重命名或删除您的config_dev.yml,您的应用程序将无法运行。要激活prod 环境,您需要将您的网络服务器指向使用app.php 而不是app_dev.php
    • 我还有另一个环境,一个名为 app_mobile 的自定义环境,但我如何确保这是生产环境而不是开发环境
    【解决方案2】:

    我遇到了在prod 环境中生成dev.log 的类似问题。我从日志条目中发现导致我的问题的原因是一个计划的 cron 作业调用了一个自定义 symfony 命令。自从停止生成dev.log 以来,将我的crontab 的条目修改为app/console--env=prod。即

    app/console --env=prod custom:command 
    

    一定错过了本书的那部分:)

    【讨论】:

    • 谢谢!当我找到这个解决方案时,我发现我的日志是 1.7 GB。
    猜你喜欢
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多