Python日志输出

发布时间:2026/7/13 2:33:40
Python日志输出 1.日志相关概念概述日志是记录程序运行时关键步骤、报错异常的一种重要信息。对查看业务运行情况异常排查有着非常重要的作用。1.1 日志级别DEBUG调试信息最低。INFO一般信息。WARNING警告可能有问题。ERROR错误已影响程序。CRITICAL严重错误最高。1.2 日志格式2. logging实现日志打印实现步骤1.配置基本的日志配置1.1 设置日志级别1.2 自定义日志输出格式2.获取日志记录器(日志对象)3.打印输出不同级别日志importlogging# 配置基本的日志设置logging.basicConfig(levellogging.INFO,# 设置日志级别format%(asctime)s - %(levelname)s - %(name)s - %(message)s# 自定义日志格式)# 获得日志记录器loggerlogging.getLogger(Example)# 记录不同级别的日志logger.debug(这是调试信息通常用于开发)logger.info(程序运行正常)logger.warning(注意可能有小问题)logger.error(程序异常)logger.critical(严重错误程序可能崩溃) 输出 2026-07-12 20:07:29,987 - INFO - Example - 程序运行正常 2026-07-12 20:07:29,987 - WARNING - Example - 注意可能有小问题 2026-07-12 20:07:29,987 - ERROR - Example - 程序异常 2026-07-12 20:07:29,987 - CRITICAL - Example - 严重错误程序可能崩溃 3. 将日志存储到文件importlogging# 日志的基本配置logging.basicConfig(filenamer./logs/app.log,# 将日志输出到./logs/app.log文件中levellogging.INFO,filemodea,# 追加模式format%(asctime)s - %(levelname)s - %(name)s - %(message)s,# 自定义文件格式encodingutf-8)# 创建日志记录器loggerlogging.getLogger(Test)# 日志输出logger.debug(这是调试信息通常用于开发)logger.info(程序运行正常)logger.warning(注意可能有小问题)logger.error(程序异常)logger.critical(严重错误程序可能崩溃)3.2 同时输出到控制台和文件1.创建日志记录器设置全局level2.创建控制台处理器设置日志级别3.创建文件日志处理器设置日志级别4.定义日志输出格式5.给两个日志控制器设置输出格式6.两个日志控制器加入大管家—日志记录器importlogging# 创建日志记录器loggerlogging.getLogger(namedemo03)logger.setLevel(levellogging.DEBUG)# 创建控制台处理器console_handlerlogging.StreamHandler()console_handler.setLevel(levellogging.DEBUG)# 创建文件日志处理器file_handlerlogging.FileHandler(filenamer./logs/app.log,modea,encodingUTF-8)file_handler.setLevel(levellogging.WARN)# 自定义日志格式formatterlogging.Formatter(%(asctime)s - %(levelname)s - %(name)s - %(message)s)# 给两个控制器设置输出格式console_handler.setFormatter(formatter)file_handler.setFormatter(formatter)# 两个日志控制器加入到日志记录器中(大管家)logger.addHandler(console_handler)logger.addHandler(file_handler)# 打印日志logger.debug(调试信息仅写入文件)logger.info(程序运行正常)logger.error(发生错误) 输出 2026-07-12 20:28:44,450 - DEBUG - demo03 - 调试信息仅写入文件 2026-07-12 20:28:44,450 - INFO - demo03 - 程序运行正常 2026-07-12 20:28:44,450 - ERROR - demo03 - 发生错误 代码分析使用Handler分别控制输出目标StreamHandler输出到控制台。FileHandler输出到文件。不同处理器可设置不同级别灵活性更高。4.日志模块封装——工程结构4.1 整体结构logging_lesson/├── logs/│ └── app.log # 日志文件├── utils/│ └── logger.py # 日志配置模块├── main.py # 主程序入口└── requirements.txt # 依赖文件本例无需额外依赖4.2 日志模块配置(utils/logger.py)实现步骤1.新建python包——为封装之后引用2.导入日志包3.定义日志处理函数(模块名, 日志路径/名称)4.日志文件、路径不存在时创建对应目录、文件5.创建日志记录器设置全局level6.创建控制台处理器设置日志级别7.创建文件日志处理器设置日志级别8.定义日志输出格式9.给两个日志控制器设置输出格式10.两个日志控制器加入大管家—日志记录器importlogging,os# 定义、封装日志处理函数defsetup_logger(name,log_filerlogs/app01.log):# 判断传入的日志文件是否存在没有就新建os.makedirs(os.path.dirname(log_file),exist_okTrue)# 创建日志记录器loggerlogging.getLogger(name)logger.setLevel(levellogging.DEBUG)# 创建控制台日志处理器consoler_handlerlogging.StreamHandler()consoler_handler.setLevel(levellogging.DEBUG)# 创建文件日志处理器file_handlerlogging.FileHandler(filenamelog_file,modea,encodingUTF-8)file_handler.setLevel(levellogging.INFO)# 自定义日志格式formatterlogging.Formatter(%(asctime)s - %(levelname)s - %(name)s - %(message)s)# 为两个控制器添加自定义格式consoler_handler.setFormatter(formatter)file_handler.setFormatter(formatter)# 将两个控制器加入大管家(日志记录器)进行调度ifnotlogger.handlers:logger.addHandler(consoler_handler)logger.addHandler(file_handler)returnlogger4.2 主函数调用日志模块调用方式入口函数__main__— main() — process_data()fromutils.logger01importsetup_logger# 调用、初始化封装好的日志处理器loggersetup_logger(nameqingyu)# 定义数据处理函数defprocess_data(data):logger.debug(f开始处理数据{data})ifnotdata:logger.error(数据为空无法处理)returnNonelogger.info(数据处理完成)returndata.upper()# 主函数defmain():logger.info(程序启动...)resultprocess_data(datahello)ifresult:logger.info(f数据处理结果:{result})else:logger.error(数据处理失败)logger.info(程序结束)