Может выводить журнал python без INFO: root

Я использую фреймворк Python с настройками по умолчанию. Для некоторых примеров сравнения данных: мне приходится сравнивать журнал с другими данными. Но журнал python начинается со значения по умолчанию, например:

INFO:root:post params in transmitter

Можно ли установить вывод журнала python без INFO:root:, например:

post params in transmitter

только с моим собственным журналом?

спасибо много!

Ответ 1

Конечно. Вы можете установить формат в любом месте:

format: '%(message)s'

Вот так:

logging.basicConfig(format='%(message)s', ...)

См. документ для получения дополнительной информации: http://docs.python.org/library/logging.config.html

Ответ 2

Используйте Formatter.

Ответ 3

Эти "INFO:..." или "DEBUG:..." появляются там, потому что этот обработчик определяет это. Мое предположение: обработчик по умолчанию все еще существует.

Вы можете проверить это, заглянув в logger.handlers сразу после его создания.

logger = logging.getLogger()
logger.handlers = [] # This is the key thing for the question!

# Start defining and assigning your handlers here
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)

Кроме того, вы можете просто переопределить формат этого обработчика по умолчанию:

if (len(logger.handlers) > 0): # Check here whatever. Or try/except. You get the idea...
    formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
    logger.handlers[0].setFormatter(formatter)

Я не эксперт Python, поэтому, возможно, есть лучший способ удалить или даже не создать этот обработчик по умолчанию, но это работает для меня хорошо.

Примечание. Как указано в документах,.basicConfig полезен для простых регистраторов. Если у вас несколько потоков, с несколькими форматами, это не работает, насколько я знаю, и вам нужно идти с настраиваемыми обработчиками.

Ответ 4

endDate = '2015-07-24'
logging.basicConfig(filename="win" + strftime("%Y%m%d", localtime()) + ".txt", level=logging.DEBUG,format='%(message)s')

Ответ 5

Вам действительно не нужно удалять слово INFO. (это действительно поможет вам, когда ваш код будет более беспорядочным, и вы будете использовать больше материала, чем просто информация, например, исключение отладки и т.д.)

Если вы хотите сравнить данные с этими данными, вы можете сделать что-то вроде пропусков первых 10 символов (INFO: ROOT:), а затем делать то, что вам хочется. Umm что-то вроде этого:

f = open("my.log","a+")
lines = f.readlines()
for line in lines:
    if(line[10:] ==  my_output):
           do_whatever_you_feel_like()

Ответ 6

Посмотрите на модуль loguru.