Python logging日志模块的核心用法与实操技巧

 更新时间:2026年03月13日 08:56:45   作者:独断万古他化  
logging 是 Python 标准库中的一个模块,它提供了灵活的日志记录功能,通过 logging,开发者可以方便地将日志信息输出到控制台、文件、网络等多种目标,本文给大家介绍了Python logging日志模块的核心用法与实操技巧,需要的朋友可以参考下

logging 日志介绍

logging 是 Python 标准库中的一个模块,它提供了灵活的日志记录功能。通过 logging,开发者可以方便地将日志信息输出到控制台、文件、网络等多种目标,同时支持不同级别的日志记录,以满足不同场景下的需求。

一、logging 使用示例

1.1 全局logging基础使用

import logging

logging.basicConfig(level=logging.INFO)

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

1.2 自定义logger并输出到控制台

# 导入 logging 模块
import logging

logging.basicConfig(level=logging.INFO)

# 获取一个日志记录器对象,名称为当前模块的名称
logger = logging.getLogger(__name__)

# 设置日志记录器的级别为 DEBUG
# 这意味着所有级别为 DEBUG 及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

if __name__ == "__main__":
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

执行结果

This is a warning message
This is an error message
This is a critical message

1.3 自定义logger并输出到日志文件

# 导入 logging 模块
import logging

# 获取一个日志记录器对象,名称为当前模块的名称
logger = logging.getLogger(__name__)

# 设置日志记录器的级别为 DEBUG
# 这意味着所有级别为 DEBUG 及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

# 创建一个 FileHandler 对象,指定日志文件的名称为 "test.log"
# 这个处理器会将日志信息写入到指定的文件中
handler = logging.FileHandler(filename="test.log")

# 将这个处理器添加到日志记录器中
# 这样,日志记录器就会使用这个处理器来处理日志信息
logger.addHandler(handler)

if __name__ == "__main__":
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

执行结果(test.log文件内容)

This is a debug message
This is an info message
This is a warning message
This is an error message
This is a critical message

1.4 设置自定义日志格式

# 导入 logging 模块
import logging

# 获取一个日志记录器对象,名称为当前模块的名称
logger = logging.getLogger(__name__)

# 设置日志记录器的级别为 DEBUG
# 这意味着所有级别为 DEBUG 及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

# 创建一个 FileHandler 对象,指定日志文件的名称为 "test.log"
# 这个处理器会将日志信息写入到指定的文件中
handler = logging.FileHandler(filename="test.log")

# 创建一个日志格式器对象
formatter = logging.Formatter(
    "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s"
)

# 将格式器设置到处理器上
handler.setFormatter(formatter)

# 将这个处理器添加到日志记录器中
# 这样,日志记录器就会使用这个处理器来处理日志信息
logger.addHandler(handler)

if __name__ == "__main__":
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

二、关键知识点说明

2.1 日志记录器获取

通过 logging.getLogger(__name__) 获取日志记录器对象,name 为当前模块的名称。使用模块名称作为日志记录器的名称有助于在大型项目中区分不同模块的日志。

2.2 日志级别规则

日志级别金字塔(优先级从低到高):DEBUG < INFO < WARNING < ERROR < CRITICAL

  • 日志记录器的级别通过 logger.setLevel(logging.XXX) 设置
  • 只有高于或等于设定级别的日志才会被处理和记录

2.3 日志处理器

  • FileHandler:用于将日志写入文件,通过 logging.FileHandler(filename="文件名") 创建
  • StreamHandler:用于将日志输出到控制台(示例中注释部分可启用)
  • 一个日志记录器可以添加多个处理器,实现日志多目标输出(如同时输出到控制台和文件)

2.4 日志格式占位符说明

格式占位符说明
%(asctime)s日志记录的时间戳,通常显示为日期和时间。
%(levelname)s日志级别(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)。
%(name)s日志记录器的名称,通常为模块名称。
%(filename)s日志记录发生的文件名。
%(funcName)s日志记录发生的函数名。
%(lineno)d日志记录发生的行号。
%(message)s日志消息本身。

2.5 格式器与处理器绑定

通过 handler.setFormatter(formatter) 将格式器对象设置到处理器上,处理器会按照指定格式格式化日志信息后输出。

通过这种方式,可以控制日志信息的输出格式,可以包含如:时间戳、日志级别、文件名、函数名、行号等。

以上就是Python logging日志模块的核心用法与实操技巧的详细内容,更多关于Python logging日志模块的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Python实现文件大小输出

    基于Python实现文件大小输出

    在数据库中存储时,使用 Bytes 更精确,可扩展性和灵活性都很高。下面通过本文给大家介绍基于Python实现文件大小输出,对python文件输出相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • Python使用Pandas库常见操作详解

    Python使用Pandas库常见操作详解

    这篇文章主要介绍了Python使用Pandas库常见操作,结合实例形式详细分析了Python Pandas模块的功能、原理、数据对象创建、查看、选择等相关操作技巧与注意事项,需要的朋友可以参考下
    2020-01-01
  • 深入理解Python爬虫代理池服务

    深入理解Python爬虫代理池服务

    这篇文章主要介绍了Python爬虫代理池服务的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python实现简单的单变量线性回归方法

    python实现简单的单变量线性回归方法

    今天小编就为大家分享一篇python实现简单的单变量线性回归方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python实现GIF图倒放

    Python实现GIF图倒放

    这篇文章主要介绍了Python如何实现GIF图倒放,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 从零开始用Python解析命令行参数之标准库argparse和第三方库click

    从零开始用Python解析命令行参数之标准库argparse和第三方库click

    argparse是Python标准库中的一个模块,用于编写用户友好的命令行界面,这篇文章主要介绍了Python解析命令行参数之标准库argparse和第三方库click的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-12-12
  • int在python中的含义以及用法

    int在python中的含义以及用法

    在本篇文章中小编给大家整理了关于int在python中的含义以及用法,对此有兴趣的朋友们可以跟着学习下。
    2019-06-06
  • Python遇到UnicodeEncodeError错误的解决方案

    Python遇到UnicodeEncodeError错误的解决方案

    在使用Python处理从不同网页抓取的文本时,经常会遇到UnicodeEncodeError错误,这通常是因为Python默认使用ASCII编码,而当遇到超出ASCII编码范围(0 - 127)的字符时,就会抛出该错误,所以本文给大家介绍了一些Python遇到UnicodeEncodeError错误的解决方案
    2025-06-06
  • 如何在Python中将字符串转换为数组详解

    如何在Python中将字符串转换为数组详解

    最近在用Python,做一个小脚本,有个操作就是要把内容换成数组对象再进行相关操作,下面这篇文章主要给大家介绍了关于如何在Python中将字符串转换为数组的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python requests上传文件实现步骤

    Python requests上传文件实现步骤

    这篇文章主要介绍了Python requests上传文件实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论