从 Symfony 1.4 任务记录 Doctrine 查询

发布于 2024-11-25 04:24:40 字数 988 浏览 1 评论 0原文

我希望 Symfony 将我的任务之一执行的 Doctrine SQL 查询记录到日志文件中,就像 Web 调试工具栏对非 cli 代码所做的那样。这可能吗?

  • Symfony 版本:1.4.12
  • Doctrine 版本:1.2.4

下面是任务的一些示例代码。我希望 SELECT 查询的记录方式与从操作中调用它的方式类似。

class exampleTask extends sfBaseTask
{
        protected function configure()
        {
                parent::configure();

                $this->namespace        = 'test';
                $this->name             = 'example';
        }

        protected function execute($arguments = array(), $options = array())
        {
                $databaseManager = new sfDatabaseManager($this->configuration);

                $users = Doctrine_Core::getTable('SfGuardUser')
                        ->createQuery('s')
                        ->select('s.first_name')
                        ->execute();

                foreach($users as $user) {
                        print $user->getFirstName()."\n";
                }
        }
}

I'd like Symfony to log the Doctrine SQL queries that one of my tasks executes to a log file, much like the web debug toolbar does for non-cli code. Is this possible?

  • Symfony version: 1.4.12
  • Doctrine version: 1.2.4

Here's some example code for a task. I would like the SELECT query to be logged in a similar way to how it would be if it was called from an action.

class exampleTask extends sfBaseTask
{
        protected function configure()
        {
                parent::configure();

                $this->namespace        = 'test';
                $this->name             = 'example';
        }

        protected function execute($arguments = array(), $options = array())
        {
                $databaseManager = new sfDatabaseManager($this->configuration);

                $users = Doctrine_Core::getTable('SfGuardUser')
                        ->createQuery('s')
                        ->select('s.first_name')
                        ->execute();

                foreach($users as $user) {
                        print $user->getFirstName()."\n";
                }
        }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

太阳公公是暖光 2024-12-02 04:24:40

尝试使用全局任务选项--trace(快捷方式-t)。就像:

./symfony --trace namespace:task

它在执行数据库查询时记录它们。

不要忘记在您运行任务的应用程序的 settings.yml 中启用日志记录。

因此,如果您在 dev 环境中运行任务您要编辑的后端 apps/backend/config/settings.yml

dev:
  .settings:
    logging_enabled:        true

请注意,这还会记录异常的堆栈跟踪,如果您需要调试任务,这也可能非常有用。

Try using the global task option --trace (shortcut -t). Like:

./symfony --trace namespace:task

It logs database queries the moment they are executed.

Don't forget to enable logging in the settings.yml of the application you're running the task in.

So if you're running the task in the dev environment of the backend you would edit apps/backend/config/settings.yml:

dev:
  .settings:
    logging_enabled:        true

Note that this also logs stack traces of exception which might also be very helpful if you need to debug your tasks.

鹤仙姿 2024-12-02 04:24:40

如果您打开日志记录,所有查询都应记录到您的应用程序日志的 log 目录中。为此,请在 settings.yml 中将 logging_enabled 设置为 true

然后,您可以在日志文件上使用 tail -f 来查看发生了什么。

If you turn logging on all queries should be logged to your application log in the log directory. To do this set logging_enabled to true in your settings.yml.

You can then tail -f on the logfile and see what's going on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文