Python logging模块基础用法与配置详解

花开有时
花开有时
发布时间:2026-10-13 | 4人浏览过
原创

本文详细介绍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编程实践有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表