🔎 Search before asking
🐛 Bug (问题描述)
如标题所示,只要调用了paddleocr,所有代码的logging level都会被修改掉,这是不对的,paddleocr应该只修改自己的log级别。我附上了测试代码,只要把代码中paddleocr的初始化代码删除就可以正常运行。也就是下面一段代码:
from paddleocr import PaddleOCR
# 初始化PaddleOCR
paddle = PaddleOCR(use_angle_cls=True, lang='en')
🏃♂️ Environment (运行环境)
OS: windows 11
Paddle OCR version: 2.10.0
🌰 Minimal Reproducible Example (最小可复现问题的Demo)
import unittest
import logging
import io
from unittest.mock import patch
class TestPaddleLogging(unittest.TestCase):
def setUp(self):
# 设置日志捕获
self.log_output = io.StringIO()
self.handler = logging.StreamHandler(self.log_output)
self.handler.setFormatter(logging.Formatter('%(levelname)s - %(message)s'))
logging.getLogger().addHandler(self.handler)
logging.getLogger().setLevel(logging.INFO)
def tearDown(self):
# 清理日志处理器
logging.getLogger().removeHandler(self.handler)
self.log_output.close()
def test_paddle_logging_behavior(self):
logger = logging.getLogger(__name__)
# 记录初始化前的日志
pre_init_message = "这是在PaddleOCR初始化之前的日志消息"
logger.info(pre_init_message)
# 获取初始化前的日志输出
pre_init_log = self.log_output.getvalue()
self.assertIn(pre_init_message, pre_init_log)
# 清空日志缓冲区
self.log_output.truncate(0)
self.log_output.seek(0)
from paddleocr import PaddleOCR
# 初始化PaddleOCR
paddle = PaddleOCR(use_angle_cls=True, lang='en')
# 记录初始化后的日志
post_init_message = "这是在PaddleOCR初始化之后的日志消息"
logger.info(post_init_message)
# 获取初始化后的日志输出
post_init_log = self.log_output.getvalue()
# 验证初始化后的日志是否未显示
self.assertNotEqual("", post_init_log.strip())
if __name__ == '__main__':
unittest.main()
🔎 Search before asking
🐛 Bug (问题描述)
如标题所示,只要调用了paddleocr,所有代码的logging level都会被修改掉,这是不对的,paddleocr应该只修改自己的log级别。我附上了测试代码,只要把代码中paddleocr的初始化代码删除就可以正常运行。也就是下面一段代码:
🏃♂️ Environment (运行环境)
OS: windows 11
Paddle OCR version: 2.10.0
🌰 Minimal Reproducible Example (最小可复现问题的Demo)