Ведение журнала запросов Doctrine от задач Symfony 1.4 - PullRequest
4 голосов
/ 17 июля 2011

Я бы хотел, чтобы Symfony регистрировал запросы Doctrine SQL, которые выполняет одна из моих задач, в файл журнала, так же, как веб-панель отладки для кода, не относящегося к клику. Возможно ли это?

  • версия Symfony: 1.4.12
  • Версия доктрины: 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";
                }
        }
}

Ответы [ 3 ]

4 голосов
/ 17 октября 2011

Попробуйте использовать глобальную опцию задачи --trace (ярлык -t). Как:

./symfony --trace namespace:task

Он регистрирует запросы к базе данных в момент их выполнения.

Не забудьте включить вход в файл settings.yml приложения, в котором вы запускаете задачу.

Итак, если вы запускаете задачу в среде dev бэкэнда, вы должны отредактировать apps/backend/config/settings.yml:

dev:
  .settings:
    logging_enabled:        true

Обратите внимание, что это также регистрирует следы исключений в стеке, что также может быть очень полезно, если вам нужно отладить свои задачи.

0 голосов
/ 17 июля 2011

Следующая ссылка содержит хороший учебник о том, как включить ведение журнала запросов Doctrine. (перевод с оригинального португальского на английский)

http://translate.google.com/translate?js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&sl=pt&tl=en&u=http%3A%2F%2Fwww.michaelpaul.com.br%2Flog-queries-doctrine.html&act=url

0 голосов
/ 17 июля 2011

Если вы включите ведение журнала, все запросы должны быть зарегистрированы в журнале вашего приложения в каталоге log. Для этого установите logging_enabled в true в вашем settings.yml.

Затем вы можете tail -f в лог-файле и посмотреть, что происходит.

...