Изменить уровни ведения журнала в Python - PullRequest
0 голосов
/ 29 апреля 2019

В Python мы получаем сообщения DEBUG и INFO, когда уровень установлен на DEBUG.И мы не получаем сообщений отладки, когда уровень установлен на INFO.

Я хочу прямо противоположное этому.Я хочу только сообщения отладки, когда уровень установлен на отладку.И сообщения INFO, и сообщения DEBUG, если для уровня установлено значение INFO.

В консоли должны быть все журналы.

Есть ли способ добиться этого?

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Написать кастом Handler.

В функции emit отметьте record.levelname и напечатайте или не печатайте запись соответствующим образом.

   import logging
   class MyHandler(logging.StreamHandler):
     def emit(self, record):     
       if record.levelname=="DEBUG":
         self.stream.write(msg)
         self.stream.write(self.terminator)
         self.flush()

Затем используйте его обычным способом :

logger = logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = MyHandler() 
fh.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
0 голосов
/ 29 апреля 2019

Это будет записывать информационные журналы в файл и отлаживать журналы в консоль.

import logging
logging.basicConfig(filename='example.log',level=logging.Info)
logging.debug('This message should go to the log file')
logging.info('So should this') 
logging.warning('And this, too')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...