Как сделать логирование SQL запросов в Yii?

Доброго времени суток. Мне необходимо логировать запросы к базе на insert и update в определенных частях приложения. Начитался про стандартное логирование Yii, попробовал - не впечатлило. Во-первых нельзя, как я понял, логировать не все запросы, а только в определенных местах, а во-вторых все это логируется в виде, непригодном для последующего выполнения, а мне эти запросы потом нужно выполнять в другие базы. Если кто понял проблему и хочет предложить репликацию, то ее не рассматриваю из-за совершенно разной конфигурации серверов.

Вопрос такой: если я использую AR, могу ли все-таки добиться того, что-бы логировать запросы в виде
UPDATE table SET column = * WHERE id =1

и в определенных местах с последующей записью в БД?

Пока вижу только переписывание всех запросов через QueryBuilder. Буду благодарен за помощь.
  • Вопрос задан
  • 1200 просмотров
Пригласить эксперта
Ответы на вопрос 1
mitaichik
@mitaichik
Можно написать свой класс логгера (LogTarget вроде), поставить категорию чтоб логгировал sql запросы, руками отфильтровывать необходимые запросы (например по вхождению instert/update), и логгировать в нужном вам формате, поставить чтоб сбрасывал лог немедленно.

Но вы уверенны что логгирование - лучший вариант? Может все-таки можно решить вашу проблему на уровне БД? Что за разная конфигурация такая что мешает использовать вам репликацию или бинлоги?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы