什么是Python';默认的日志格式化程序?
我试图解密日志中包含的信息(日志设置使用默认的格式化程序)。各国: 对记录进行格式化-如果设置了格式化程序,请使用它。否则,请使用模块的默认格式化程序什么是Python';默认的日志格式化程序?,python,logging,Python,Logging,我试图解密日志中包含的信息(日志设置使用默认的格式化程序)。各国: 对记录进行格式化-如果设置了格式化程序,请使用它。否则,请使用模块的默认格式化程序 但是,我找不到任何实际说明此默认格式是什么的参考。它位于日志记录/uuuu init\uuuuuuuuuuuy.py的源代码中: _defaultFormatter = Formatter() 默认格式字符串为,也在源中: if fmt: self._fmt = fmt else: self._fmt = "%(message)
但是,我找不到任何实际说明此默认格式是什么的参考。它位于
日志记录/uuuu init\uuuuuuuuuuuy.py的源代码中:
_defaultFormatter = Formatter()
默认格式字符串为,也在源中:
if fmt:
self._fmt = fmt
else:
self._fmt = "%(message)s"
默认值似乎是%(levelname)s:%(name)s:%(message)s
默认格式位于以下位置:
BASIC_FORMAT=“%(levelname)s:%(name)s:%(message)s”
代码将告诉您如何自定义它。下面是一个关于如何自定义它的示例
导入系统
导入日志记录
logging.basicConfig(
级别=logging.DEBUG,
format=“[%(asctime)s]%(levelname)s[%(name)s.%(funcName)s:%(行号)d]%(消息)s”,
datefmt=“%d/%b/%Y%H:%M:%S”,
stream=sys.stdout)
logging.info(“嘿”)
其结果是:
[26/May/2013 06:41:40]信息[root.:1]嘿
旧线程,但这首先出现在我的谷歌搜索结果查询“python日志默认格式”,所以我想我应该添加我的答案
还有一些评论问,人们是如何独自发现这一点的。这是一件很自然的事情:
import logging
print(dir(logging))
基本格式在那里,事实上,在我的案例中,它是结果中的第一个条目。下面是一个高级日志记录方式的示例:-
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')
显示如何检查当前格式化程序而不是源代码中的默认格式化程序是一个更好的答案。文档似乎应该指出这一点。您如何知道日志记录的基本格式属性?在您的示例中未定义所有
log
之后,文档中没有提到它。可能应该称为日志记录
。
import logging
print(dir(logging))
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')