Что такое стандартный форматировщик логов Python? - программирование
Подтвердить что ты не робот

Что такое стандартный форматировщик логов Python?

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

Делайте форматирование для записи - если установлен форматер, используйте его. В противном случае используйте модуль форматирования по умолчанию для модуля.

Тем не менее, я не могу найти какую-либо ссылку на то, что это формат по умолчанию.

4b9b3361

Ответ 1

Формат по умолчанию расположен здесь:

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"  

Код формата расскажет вам, как вы можете настроить его. Вот один пример того, как вы можете настроить его.

import sys
import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
    datefmt="%H:%M:%S",
    stream=sys.stdout)

logging.info("HEY")

Что приводит к:

[26/May/2013 06:41:40] INFO [root.<module>:1] HEY

Ответ 2

import logging
print(logging.BASIC_FORMAT)

Старый поток, но это появляется первым в моих результатах поиска google для запроса "формат записи в формате python по умолчанию", поэтому я подумал, что должен добавить свой ответ.

Также некоторые комментарии спросили о том, как можно было открыть это самостоятельно. Вот что естественно сделать:

import logging
print(dir(logging))

BASIC_FORMAT там, на самом деле это первая запись в результате в моем случае.

Ответ 3

Он находится в источнике logging/__init__.py:

_defaultFormatter = Formatter()

Строка форматирования по умолчанию %(message)s, которая также находится в источнике:

if fmt:
    self._fmt = fmt
else:
    self._fmt = "%(message)s"

Ответ 4

По умолчанию используется %(levelname)s:%(name)s:%(message)s

import logging
logging.error("Some error")
print "fmt: " , logging.root.handlers[0].formatter._fmt
# ERROR:root:Some error
# fmt:  %(levelname)s:%(name)s:%(message)s

Ответ 5

Вот пример продвинутого способа регистрации: -

import logging
class logger_con():
   def log_test(self):
      """
        :create logger
        :set logger level
        :create console handler
        :add formatter to console handler
        :add console handler to logger
        :add logging massage
        :return:
      """
    #create logger and set level
    logger=logging.getLogger(logger_con.__name__)

    logger.setLevel(logging.INFO)

    #create console handler(we are using steamHandler which is only used to display log in console)

    con_handler=logging.StreamHandler()
    con_handler.setLevel(logging.INFO)

    #create formatter and add formatter to con_handler
    formatter=logging.Formatter('%(asctime)s : %(message)s : %(levelname)s -%(name)s',datefmt='%d%m%Y %I:%M:%S %p')
    con_handler.setFormatter(formatter)
    #add console handler to logger
    logger.addHandler(con_handler)

    logger.debug('Program debugging')
    logger.info('massage conatain information')
    logger.warning('warning message')
    logger.error('massage contains error')
    logger.critical('critical massages')