一.logging.info()
默认级别warning
logging.info("%s 我们是冠军 %s", "yes", "!!!")
"""
输出:INFO:root:yes 我们是冠军 !!!
"""
二.组件:记录器、处理器、过滤器和格式器
1.记录器logger
logger = logging.getLogger(__name__)
-
Logger.setLevel() 指定记录器将处理的最低严重性日志消息,其中 debug 是最低内置严重性级别, critical 是最高内置严重性级别。 例如,如果严重性级别为 INFO ,则记录器将仅处理 INFO 、 WARNING 、 ERROR 和 CRITICAL 消息,并将忽略 DEBUG 消息。
-
Logger.addHandler() 和 Logger.removeHandler() 从记录器对象中添加和删除处理器对象。处理器在以下内容中有更详细的介绍 处理器 。
-
Logger.addFilter() 和 Logger.removeFilter() 可以添加或移除记录器对象中的过滤器。 过滤器对象 包含更多的过滤器细节
-
logger.propagate = False
子记录器将消息传播到与其父级记录器关联的处理器。因此,不必为应用程序使用的所有记录器定义和配置处理器。一般为顶级记录器配置处理器,再根据需要创建子记录器就足够了。(但是,你可以通过将记录器的 propagate 属性设置为 False
来关闭传播。)
2.处理器handler
console_handler = logging.StreamHandler(stream=sys.stdout) sys.stderr标准错误输出
file_handler = logging.FileHandler(filename=log_path, encoding="utf8")
logger.addHandler(console_handler)
logger.addHandler(file_handler)
3.格式器
logging.Formatter.
__init__
(fmt=None, datefmt=None, style='%')
如果没有消息格式字符串,则默认使用原始消息。如果没有日期格式字符串,则默认日期格式为:
%Y-%m-%d %H:%M:%S
fmt = "%(asctime)s %(name)s %(funcName)s %(process)d %(threadName)s %(levelname)s %(message)s "
logging.Formatter.default_msec_format = '%s.%03d' #输出毫秒格式
log_format = logging.Formatter(fmt=fmt)
console_handler.setFormatter(log_format)
file_handler.setFormatter(log_format)