Python Logger错误流配置:保留ERROR级别且禁止终端输出
解决方案
方案一:移除StreamHandler(推荐)
既然目标是完全禁止终端输出日志,直接删除代码中创建StreamHandler的相关逻辑即可,转而只配置FileHandler将日志写入文件。示例代码如下:
import logging # 配置FileHandler,将日志写入指定文件 file_handler = logging.FileHandler('app.log') file_handler.setLevel(logging.ERROR) # 保留你需要的ERROR级别 # 配置日志格式(可选,按需调整) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') file_handler.setFormatter(formatter) # 初始化根日志器并添加FileHandler logger = logging.getLogger() logger.setLevel(logging.ERROR) logger.addHandler(file_handler) # 测试:日志仅写入文件,终端无输出 try: 1 / 0 except Exception: logger.exception('error')
方案二:重定向StreamHandler的输出流
如果因特殊需求必须保留StreamHandler对象,可将其输出流指向空设备,让日志直接被丢弃而不显示在终端:
Linux/macOS 环境
import logging import os stream_handler = logging.StreamHandler(stream=open(os.devnull, 'w')) stream_handler.setLevel(logging.ERROR) # 保留原有级别配置 # 后续添加FileHandler的逻辑同方案一...
Windows 环境
import logging import os stream_handler = logging.StreamHandler(stream=open('nul', 'w')) stream_handler.setLevel(logging.ERROR) # 保留原有级别配置 # 后续添加FileHandler的逻辑同方案一...
内容的提问来源于stack exchange,提问作者bad_coder9042093
相关产品推荐
相关产品推荐

