Python Logging 日志记录入门学习
本文介绍 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 日志配置的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













