Python Logging 日志记录入门学习

拾光
拾光
发布时间:2026-10-11| 3人浏览过
原创

本文介绍 Python 标准库 logging 模块的使用。通过定义主入口 logger 并配置处理器(文件与屏幕输出),子模块利用 getLogger 继承日志名(如 main.sub)自动获取父级配置。文章提供完整的代码示例,展示如何设置日志格式、处理级别及在模块间共享日志对象。

Python 日志记录基础

Python 的 logging 模块提供了灵活的日志记录功能。它会自动将自定义的 logger 对象全局化,使得同一模块中的其他文件可以读取已定义的 logger。子模块通过 logging.getLogger('日志名') 获取父级设置,日志名建议采用 .子名称 格式以标识来源。父级 logger 名称必须一致才能被识别,logging 根据 . 号识别日志的上下级关系。子日志可继续派生子子日志,如 main.sub.func1。

日志配置方法

自定义 logger 有三种设置方法:代码、config.ini、字典。其中,字典配置不常用且不方便,.ini 语法不易读。推荐直接在 Python 代码中编写 logger 设置,必须在主入口文件中定义好 logger,子模块需在调用前确保 logger 已定义。logger 定义位置可在 main() 或任意函数类中,定义后日志名被记录,子模块可继承设置。

代码实现示例

首先,我们看一个简单的日志输出示例:

import logging
 
logging.error("出现了错误")
logging.info("打印信息")
logging.warning("警告信息")

接下来,我们展示一个完整的程序结构。主入口文件 main.py 负责定义 logger 并配置处理器:

#  main.py
import logging
import otherMod2  # 等下会调用到的子模块

def main():
  """
  这个文件是程序的主入口
  """

  define_logger()

  log = logging.getLogger('exampleApp')

  # 输出信息测试
  logger.info("Program started")
  result = otherMod2.add(7, 8)   # 这个是来自别的模块的方法
  logger.info("Done!")

def define_logger():
  logger = logging.getLogger("exampleApp")
  logger.setLevel(logging.INFO)

  # 设置输出格式
  formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
 
  # 设置日志文件处理器
  fh = logging.FileHandler("new_snake.log")
  fh.setFormatter(formatter)  # 为这个处理器添加格式

  # 设置屏幕stdout输出处理器
  sh = logging.StreamHandler(stream=None)
  sh.setFormatter(formatter)
 
  # 把处理器加到logger上
  logger.addHandler(fh)
  logger.addHandler(sh)
 
if __name__ == "__main__":
  main()

在子模块 otherMod2.py 中,通过 getLogger 继承父级 logger:

# otherMod2.py
import logging
 
module_logger = logging.getLogger("exampleApp.otherMod2")

def add(x, y):
  # 这里一句`getLogger`就继承到父级的logger了
  logger = logging.getLogger("exampleApp.otherMod2.add")

  # 输出测试
  logger.info("added %s and %s to get %s" % (x, y, x+y))
  return x+y

总结

通过合理配置 logger 和处理器,可以实现灵活的日志记录。子模块利用 getLogger 继承日志名(如 main.sub)自动获取父级配置,使得日志管理更加便捷。以上就是 Python Logging 日志记录入门学习的详细内容,更多关于 Python 日志配置的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。