python日志logging
基本使用
import logging
# 创建 logger 对象,并为对象设置名字,用于区分不同模块之间的日志
logger = logging.getLogger('my_app')
# 设置整个日志输出的默认等级,当设置DEBUG等级时,默认全部可以输出,但是后面的控制台对象和文件处理对象,可以重新定义等级限制日志输出!
logger.setLevel(logging.DEBUG)
# 创建控制台处理器,用于在控制台输出,如果不设置,控制台将不会输出日志
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 创建文件处理器
fh = logging.FileHandler('app.log',encoding='utf-8',mode='a')
fh.setLevel(logging.ERROR)
# 创建格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 为处理器添加格式化器
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# 为 logger 添加处理器
logger.addHandler(ch)
logger.addHandler(fh)
# 使用 logger
logger.debug('调试信息')
logger.info('一般信息')
logger.warning('警告信息')
logger.error('错误信息')
logger.critical('严重错误')
Python logging 定义了以下级别(从低到高):
DEBUG - 调试信息
INFO - 一般信息
WARNING - 警告信息(默认级别)
ERROR - 错误信息
CRITICAL - 严重错误
输出格式
| 参数 | 说明 |
|---|---|
| %(name)s | Logger 的名称 |
| %(levelno)s | 日志级别的数字值 (DEBUG=10, INFO=20, WARNING=30, ERROR=40, CRITICAL=50) |
| %(levelname)s | 日志级别的文本名称 ("DEBUG", "INFO"等) |
| %(pathname)s | 产生日志的源文件的完整路径 |
| %(filename)s | 文件名(路径的最后部分) |
| %(module)s | 模块名(文件名的名称部分) |
| %(lineno)d | 产生日志的源代码行号 |
| %(funcName)s | 产生日志的函数名 |
| %(created)f | 日志创建时间(time.time()返回的值) |
| %(asctime)s | 可读的时间格式(可通过 datefmt 参数自定义) |
| %(msecs)d | 创建时间的毫秒部分 |
| %(relativeCreated)d | 日志创建时间相对于 logging 模块加载时间的毫秒数 |
| %(thread)d | 线程ID(如果可用) |
| %(threadName)s | 线程名(如果可用) |
| %(process)d | 进程ID(如果可用) |
| %(message)s | 日志消息内容 |

浙公网安备 33010602011771号