BEGIN call загрязняет логи SQLAlchemy - PullRequest
1 голос
/ 14 января 2011

Я использую SQLAlchemy 0.6.3 с Pylons 1.0, и мой файл sqlalchemy.log загрязняется вызовами "BEGIN":

2011-01-14 10:15:17 SELECT /* redacted */
2011-01-14 10:15:22 BEGIN
2011-01-14 10:15:27 BEGIN
2011-01-14 10:15:32 BEGIN
2011-01-14 10:15:37 BEGIN
2011-01-14 10:15:42 BEGIN
2011-01-14 10:15:47 BEGIN
2011-01-14 10:15:52 BEGIN
2011-01-14 10:15:53 SELECT /* redacted */
2011-01-14 10:16:33 BEGIN
2011-01-14 10:16:35 BEGIN
2011-01-14 10:16:42 BEGIN
2011-01-14 10:16:49 BEGIN
2011-01-14 10:16:52 BEGIN

Это действительно раздражает и мешает видеть полезный код SQL, выполняемый SQLAlchemy. Есть ли способ предотвратить распечатывание SQLAlchemy или вообще выполнить их? Кажется, они ничего не делают.

1 Ответ

0 голосов
/ 06 февраля 2011

Один из подходов - выяснить, почему SQLAlchemy делает это, и посмотреть, можно ли их избежать.Другим было бы отфильтровать их на уровне регистрации.Модуль Python logging поддерживает фильтры.

Вот краткий автономный пример, адаптированный из , этот пример из документов Python :

import logging

class BeginFilter(logging.Filter):
    """ This is a filter which drops BEGIN statements. """

    def filter(self, record):
        return False if record.msg == "BEGIN" else True

if __name__ == "__main__":
   logging.basicConfig(level=logging.DEBUG,
                       format="%(asctime)-15s %(name)-5s %(levelname)-8s %(message)s")
   a1 = logging.getLogger("a.b.c")

   f = BeginFilter()
   a1.addFilter(f)

   a1.debug("SELECT ...")
   a1.debug("BEGIN")
   a1.debug("BEGIN")
   a1.debug("BEGIN")
   a1.debug("BEGIN")
   a1.debug("SELECT ...")
   a1.debug("BEGIN")
...