本篇内容是logging日志配置基础篇,学完本篇,读者将会理解日志,使用日志,自定义配置日志;
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
日志级别从高到低顺序(50-10) :critical --> error --> warning --> info --> debug ;
日志级别越高,打印信息越少;
日志模块函数如下
常用参数如下
format大体参数如下
简单日志示例如下,无法满足生产需求,最终还是需要自定义日志;
import logging
logging.basicConfig(filename="test.log", filemode="w", format="%(asctime)s %(name)s:%(levelname)s:%(message)s", datefmt="%d-%m-%Y %H:%M:%S", level=logging.DEBUG)
logging.debug(‘debug message‘)
logging.info(‘info message‘)
logging.warning(‘warning message‘)
logging.error(‘error message‘)
logging.critical(‘critical message‘)
输出至test.log文件内容
29-04-2020 17:34:44 root:DEBUG:debug message
29-04-2020 17:34:44 root:INFO:info message
29-04-2020 17:34:44 root:WARNING:warning message
29-04-2020 17:34:44 root:ERROR:error message
29-04-2020 17:34:44 root:CRITICAL:critical message
logger组件如下
常用的 Handler
示例如下
import logging
import sys
# 取名为 zszsz 的日志器
logger = logging.getLogger("zszsz")
logger.setLevel(level=logging.DEBUG)
# 设置日志格式
formatter = logging.Formatter(fmt=‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘,datefmt="%d-%m-%Y %H:%M:%S")
""" 处理器1 """
# 输出到控制台
stream_handler = logging.StreamHandler(sys.stdout)
# 设置日志级别
stream_handler.setLevel(level=logging.DEBUG)
# 添加日志格式
stream_handler.setFormatter(formatter)
# 添加处理器
logger.addHandler(stream_handler)
""" 处理器2 """
# 输出到文件
file_handler = logging.FileHandler(‘zszsz.log‘)
# 设置日志级别
file_handler.setLevel(level=logging.INFO)
# 添加日志格式
file_handler.setFormatter(formatter)
# 添加处理器
logger.addHandler(file_handler)
# 日志
logger.debug(‘-------------知识追寻者!!!‘)
logger.info(‘-------------info级别!!!‘)
控制台输出
07-05-2020 10:59:27 - zszsz - DEBUG - -------------知识追寻者!!!
07-05-2020 10:59:27 - zszsz - INFO - -------------info级别!!!
文件输出
07-05-2020 10:59:27 - zszsz - INFO - -------------info级别!!!
logging.conf 配置示例如下,根据自定义Logger的逻辑进行配置理解;
[loggers]
keys=root,simpleExample
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
调用示例
# -*- encoding:utf-8 -*-
import logging
from logging import config
# 获取配置
config.fileConfig(fname=‘logging.conf‘, disable_existing_loggers=False)
logger = logging.getLogger(‘simpleExample‘)
logger.debug(‘debug message‘)
logger.info(‘info message‘)
logger.error(‘error message‘)
logger.critical(‘critical message‘)
输出
2020-05-07 13:28:26,391 - simpleExample - DEBUG - debug message
2020-05-07 13:28:26,391 - simpleExample - INFO - info message
2020-05-07 13:28:26,391 - simpleExample - ERROR - error message
2020-05-07 13:28:26,391 - simpleExample - CRITICAL - critical message
更多内容参考官网
https://docs.python.org/3.3/howto/logging.html#configuring-logging
原文:https://www.cnblogs.com/zszxz/p/12852985.html