我正在尝试破译日志中包含的信息(日志记录设置使用的是默认格式化程序)。 documentation州:
对记录进行格式化 - 如果设置了格式化程序,请使用它。否则,请使用模块的默认格式化程序。
但是,我找不到任何实际说明这种默认格式的引用。
答案 0 :(得分:39)
默认格式位于here,即:
BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
Format代码会告诉您如何自定义它。以下是一个关于如何自定义它的示例。
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
答案 1 :(得分:3)
import logging
print(logging.BASIC_FORMAT)
旧线程,但这在我的谷歌搜索结果中首先出现查询“python logging default format”,所以我想我应该添加我的答案。
还有一些评论询问人们如何能够自己发现这一点。这是一件很自然的事情:
import logging
print(dir(logging))
BASIC_FORMAT就在那里,实际上它是我案例中结果的第一个条目。
答案 2 :(得分:1)
它位于logging/__init__.py
:
_defaultFormatter = Formatter()
默认格式字符串是%(message)s
,它也在源代码中:
if fmt:
self._fmt = fmt
else:
self._fmt = "%(message)s"
答案 3 :(得分:1)
默认似乎是%(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
答案 4 :(得分:0)
以下是高级日志记录方式的示例:-
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')