Python logging 模块打印异常 exception

该博客为转载内容,转载自https://www.cnblogs.com/liujx2019/p/11176826.html ,涉及Python相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

logger.exception(sys.exc_info())

 

转载于:https://www.cnblogs.com/liujx2019/p/11176826.html

<think>我们正在回答用户关于Python logging模块使用方法的问题。根据用户的要求,我们需要使用中文回答,并且遵循LaTeX格式要求。同时,我们需要在回答中自然地添加引用标识,并在最后生成相关问题。 根据提供的引用资料,我们可以总结logging模块的基本使用步骤: 1. 引入logging模块 2. 配置日志记录器(设置日志级别、创建处理器和格式化器等) 3. 获取日志记录器对象 4. 记录日志 5. (可选)添加处理器和格式化器 我们将按照这些步骤进行讲解,并结合引用中的示例代码进行说明。 注意:引用[1][2][3]提供了不同的使用方式,我们将综合这些信息,给一个清晰的使用教程。 另外,注意用户要求行内数学表达式用$...$,独立公式用$$...$$,但在这个问题中可能涉及较少数学公式,我们主要关注代码和文字描述。 开始编写回答:</think>### Python logging模块使用教程 Python的`logging`模块是标准库中用于日志记录的核心工具,相比`print()`具有以下优势: - 可设置不同日志等级(DEBUG/INFO/WARNING/ERROR/CRITICAL),在发布版本中仅输关键信息[^2] - 灵活控制输目标(控制台/文件/网络等)和格式[^2] - 支持日志文件回滚和分级管理[^2] #### 基础使用步骤 ```python import logging # 1. 创建日志记录器 logger = logging.getLogger("my_logger") logger.setLevel(logging.DEBUG) # 设置记录级别 # 2. 创建格式化器 formatter = logging.Formatter( "[%(asctime)s] - [%(levelname)s] - %(filename)s:%(lineno)d - %(message)s" ) # 3. 创建处理器(以控制台和文件为例) # 控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(logging.WARNING) # 控制台只显示WARNING及以上级别 console_handler.setFormatter(formatter) # 文件处理器 file_handler = logging.FileHandler("app.log", encoding="utf-8") file_handler.setLevel(logging.INFO) # 文件记录INFO及以上级别 file_handler.setFormatter(formatter) # 4. 将处理器添加到记录器 logger.addHandler(console_handler) logger.addHandler(file_handler) # 5. 记录日志 logger.debug("调试信息") # 通常开发阶段使用 logger.info("程序运行信息") # 常规运行信息 logger.warning("潜在问题") # 不影响运行的异常 logger.error("功能错误") # 部分功能失效 logger.critical("严重错误") # 可能导致程序崩溃 ``` #### 关键概念解析 1. **日志等级**(从低到高): - DEBUG:$level=10$ - INFO:$level=20$ - WARNING:$level=30$ - ERROR:$level=40$ - CRITICAL:$level=50$ 2. **日志传播**: - 默认向父记录器传播,可通过`logger.propagate = False`关闭[^1] 3. **格式化符号**: - `%(asctime)s`:时间戳 - `%(levelname)s`:日志级别 - `%(filename)s`:文件名 - `%(message)s`:日志内容 - [完整字段列表](https://docs.python.org/3/library/logging.html#logrecord-attributes) #### 高级配置 ```python # 日志文件轮转(每天生成新文件) from logging.handlers import TimedRotatingFileHandler rotating_handler = TimedRotatingFileHandler( "app.log", when="midnight", interval=1, backupCount=7 ) # 捕获未处理异常 def handle_exception(exc_type, exc_value, exc_traceback): logger.critical("未捕获异常", exc_info=(exc_type, exc_value, exc_traceback)) sys.excepthook = handle_exception ``` #### 最佳实践 1. 模块使用`logger = logging.getLogger(__name__)`实现按模块命名 2. 生产环境建议使用`WARNING`作为默认级别 3. 敏感信息过滤:重写`Filter`类过滤密码等数据 4. 对于异步应用,使用`QueueHandler`避免阻塞[^1] > 示例输: > ``` > [2023-10-05 14:30:22] - [INFO] - main.py:18 - 程序启动成功 > [2023-10-05 14:31:05] - [ERROR] - network.py:102 - 连接服务器超时 > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值