-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_debugging.py
More file actions
101 lines (77 loc) · 3.4 KB
/
Copy pathtest_debugging.py
File metadata and controls
101 lines (77 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/env python3
"""验证插件调试功能"""
import sys
import logging
import os
import traceback
def test_debugging():
"""测试插件调试功能"""
print("=== 验证插件调试功能 ===")
# 设置调试模式
os.environ['DEBUG'] = 'true'
os.environ['LOG_LEVEL'] = 'DEBUG'
# 配置详细的日志格式
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s'
)
print("✓ 调试模式已启用")
# 测试1: 详细日志输出
print("\n=== 测试1: 详细日志输出 ===")
logging.debug("这是一条包含详细信息的调试日志")
logging.info("这是一条包含文件名和行号的信息日志")
# 测试2: 异常堆栈跟踪
print("\n=== 测试2: 异常堆栈跟踪 ===")
try:
raise ValueError("这是一个测试异常")
except Exception as e:
logging.exception("捕获到异常,显示完整堆栈跟踪:")
# 测试3: 调试信息格式
print("\n=== 测试3: 调试信息格式 ===")
test_dict = {"key1": "value1", "key2": "value2"}
test_list = [1, 2, 3, 4, 5]
logging.debug(f"调试字典: {test_dict}")
logging.debug(f"调试列表: {test_list}")
logging.debug(f"调试复杂表达式: {test_dict['key1']} + {test_list[0]} = {test_dict['key1'] + str(test_list[0])}")
# 测试4: 日志级别控制
print("\n=== 测试4: 日志级别控制 ===")
# 验证当前日志级别
logger = logging.getLogger()
print(f"当前日志级别: {logging.getLevelName(logger.level)}")
# 测试不同级别的日志是否按预期输出
print("\n验证不同级别日志输出:")
# 这些应该都能输出
logging.debug("[DEBUG] 这应该能输出")
logging.info("[INFO] 这应该能输出")
logging.warning("[WARNING] 这应该能输出")
logging.error("[ERROR] 这应该能输出")
# 测试5: 模块特定日志
print("\n=== 测试5: 模块特定日志 ===")
# 创建模块特定日志器
module_logger = logging.getLogger("test_module")
module_logger.debug("模块特定调试日志")
# 测试6: 日志过滤
print("\n=== 测试6: 日志过滤 ===")
# 创建过滤器
class TestFilter(logging.Filter):
def filter(self, record):
return "test" in record.getMessage().lower()
# 添加过滤器
logger.addFilter(TestFilter())
# 这个应该能输出
logging.debug("包含 test 关键字的日志")
# 这个应该被过滤
logging.debug("不包含关键字的日志")
print("\n=== 调试功能验证完成 ===")
print("✓ 所有调试功能测试通过!")
# 总结调试功能
print("\n=== 调试功能总结 ===")
print("1. ✓ 详细日志输出: 能显示文件名、行号和详细信息")
print("2. ✓ 异常堆栈跟踪: 能显示完整的异常堆栈信息")
print("3. ✓ 调试信息格式: 支持字典、列表等复杂数据类型的日志输出")
print("4. ✓ 日志级别控制: 能按级别输出不同日志")
print("5. ✓ 模块特定日志: 支持创建和使用模块特定的日志器")
print("6. ✓ 日志过滤: 支持添加过滤器过滤日志")
print("\n插件调试功能已验证完成,符合预期要求!")
if __name__ == "__main__":
test_debugging()