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 日志消息内容
posted @ 2025-05-23 17:30  CodeCraftsMan  阅读(39)  评论(0)    收藏  举报