Python日志输出
·
1.日志相关概念
概述:日志是记录程序运行时关键步骤、报错异常的一种重要信息。对查看业务运行情况,异常排查有着非常重要的作用。
1.1 日志级别
- DEBUG:调试信息(最低)。
- INFO:一般信息。
- WARNING:警告,可能有问题。
- ERROR:错误,已影响程序。
- CRITICAL:严重错误(最高)。
1.2 日志格式

2. logging实现日志打印
实现步骤:
1.配置基本的日志配置
1.1 设置日志级别
1.2 自定义日志输出格式
2.获取日志记录器(日志对象)
3.打印输出不同级别日志
import logging
# 配置基本的日志设置
logging.basicConfig(
level=logging.INFO, # 设置日志级别
format="%(asctime)s - %(levelname)s - %(name)s - %(message)s" # 自定义日志格式
)
# 获得日志记录器
logger = logging.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. 将日志存储到文件
import logging
# 日志的基本配置
logging.basicConfig(
filename=r'./logs/app.log', # 将日志输出到./logs/app.log文件中
level=logging.INFO,
filemode="a", # 追加模式
format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", # 自定义文件格式
encoding="utf-8"
)
# 创建日志记录器
logger = logging.getLogger("Test")
# 日志输出
logger.debug("这是调试信息,通常用于开发")
logger.info("程序运行正常")
logger.warning("注意,可能有小问题")
logger.error("程序异常")
logger.critical("严重错误,程序可能崩溃")
3.2 同时输出到控制台和文件
1.创建日志记录器,设置全局level
2.创建控制台处理器
设置日志级别
3.创建文件日志处理器
设置日志级别
4.定义日志输出格式
5.给两个日志控制器,设置输出格式
6.两个日志控制器加入大管家—日志记录器
import logging
# 创建日志记录器
logger = logging.getLogger(name="demo03")
logger.setLevel(level=logging.DEBUG)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(level=logging.DEBUG)
# 创建文件日志处理器
file_handler = logging.FileHandler(filename=r'./logs/app.log', mode="a", encoding="UTF-8")
file_handler.setLevel(level=logging.WARN)
# 自定义日志格式
formatter = logging.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.创建日志记录器,设置全局level
6.创建控制台处理器
设置日志级别
7.创建文件日志处理器
设置日志级别
8.定义日志输出格式
9.给两个日志控制器,设置输出格式
10.两个日志控制器加入大管家—日志记录器
import logging, os
# 定义、封装日志处理函数
def setup_logger(name, log_file=r"logs/app01.log"):
# 判断传入的日志文件是否存在,没有就新建
os.makedirs(os.path.dirname(log_file), exist_ok=True)
# 创建日志记录器
logger = logging.getLogger(name)
logger.setLevel(level=logging.DEBUG)
# 创建控制台日志处理器
consoler_handler = logging.StreamHandler()
consoler_handler.setLevel(level=logging.DEBUG)
# 创建文件日志处理器
file_handler = logging.FileHandler(filename=log_file, mode="a", encoding="UTF-8")
file_handler.setLevel(level=logging.INFO)
# 自定义日志格式
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s")
# 为两个控制器添加自定义格式
consoler_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# 将两个控制器加入大管家(日志记录器)进行调度
if not logger.handlers:
logger.addHandler(consoler_handler)
logger.addHandler(file_handler)
return logger
4.2 主函数调用日志模块
调用方式:入口函数__main__—> main() —> process_data()
from utils.logger01 import setup_logger
# 调用、初始化封装好的日志处理器
logger = setup_logger(name="qingyu")
# 定义数据处理函数
def process_data(data):
logger.debug(f"开始处理数据{data}")
if not data:
logger.error("数据为空,无法处理")
return None
logger.info("数据处理完成")
return data.upper()
# 主函数
def main():
logger.info("程序启动...")
result = process_data(data="hello")
if result:
logger.info(f"数据处理结果:{result}")
else:
logger.error("数据处理失败")
logger.info("程序结束")
更多推荐


所有评论(0)