Что такое стандартный форматировщик логов Python?
Я пытаюсь расшифровать информацию, содержащуюся в моих журналах (при настройке ведения журнала используется форматтер по умолчанию). В документации говорится:
Делайте форматирование для записи - если установлен форматер, используйте его. В противном случае используйте модуль форматирования по умолчанию для модуля.
Тем не менее, я не могу найти какую-либо ссылку на то, что это формат по умолчанию.
Ответы
Ответ 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')