Python logging模块基础用法与配置详解
本文详细介绍Python标准库logging模块的基本用法。通过logging.basicConfig函数,可配置文件名、模式、格式及日志级别等核心参数。文章解析了Logger、Handler、Formatter等组件的作用,并提供自定义日志记录器的完整代码示例及输出结果,帮助开发者快速掌握Python日志管理技巧。
本文通过具体实例解析Python中logging模块的使用方法,旨在为读者提供实用的参考与学习素材。
logging模块
函数式简单配置
import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
在logging.basicConfig()函数中,可以通过传入具体参数来调整logging模块的默认行为。支持配置的关键参数包括:
- filename:指定日志文件名称,创建FileHandler将日志写入该文件。
- filemode:指定文件打开模式,仅在设置了filename时生效。默认值为“a”(追加),也可指定为“w”(覆盖写入)。
- format:定义日志输出的显示格式字符串。
- datefmt:指定日期和时间的显示格式。
- level:设置root logger(后续章节将详细讲解其概念)的日志记录级别。
- stream:使用指定的流对象创建StreamHandler。输出目标可指定为
sys.stderr、sys.stdout或文件对象(f=open('test.log','w')),默认输出至sys.stderr。若同时提供filename和stream参数,stream参数将被忽略。
format参数中支持的格式化字符串选项如下:
| %(name)s | Logger的名字 |
| %(levelno)s | 数字形式的日志级别 |
| %(levelname)s | 文本形式的日志级别 |
| %(pathname)s | 调用日志输出函数的模块的完整路径名,可能没有 |
| %(filename)s | 调用日志输出函数的模块的文件名 |
| %(module)s | 调用日志输出函数的模块名 |
| %(funcName)s | 调用日志输出函数的函数名 |
| %(lineno)d | 调用日志输出函数的语句所在的代码行 |
| %(created)f | 当前时间,用UNIX标准的表示时间的浮 点数表示 |
| %(relativeCreated)d | 输出日志信息时的,自Logger创建以 来的毫秒数 |
| %(asctime)s | 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 |
| %(thread)d | 线程ID。可能没有 |
| %(threadName)s | 线程名。可能没有 |
| %(process)d | 进程ID。可能没有 |
| %(message)s | 用户输出的消息 |
logging库主要包含四个核心组件:Logger、Handler、Filter和Formatter。Logger对象为应用程序提供直接使用的接口;Handler负责将日志发送至合适的目标;Filter用于过滤日志信息;Formatter则定义日志的具体显示格式。此外,可通过logger.setLevel(logging.Debug)设置级别,或者通过fh.setLevel(logging.Debug)针对特定文件流单独设置日志级别。
def my_logger(filename,leval,file = True,stream = True):
logger = logging.getLogger()
formatter = logging.Formatter (fmt = '%(asctime)s--%(message)s----%(name)s--%(levelname)s--%(lineno)d',
datefmt = '%d/%m/%y %H:%M:%S')
logger.setLevel(leval)
if file:
file_handler = logging.FileHandler(filename, encoding='utf-8')
logger.addHandler(file_handler)
file_handler.setFormatter(formatter)
if stream:
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
return logger
logger = my_logger('logging',logging.DEBUG)
logger.warning('warn!!!')
运行结果示例如下:
28/08/18 09:48:53--warn!!!----root--WARNING--27
如果您对Python的其他技术感兴趣,欢迎查阅本站专题:《Python日志操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》以及《Python文件与目录操作技巧汇总》。
希望本文提供的代码示例和解析能对您的Python编程实践有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









