写一个log检测工具框架,包含如下功能: 1.可以检测程序流程,通过关键字匹配的方式检测每一项功能是否正常 2.能从关键字中提取状态码,每个状态码有个错误字符串对应表 3.可以将检测结果保存到文件
时间: 2024-03-17 21:42:59 浏览: 14
好的,我可以为您提供一个简单的log检测工具框架,包含以下功能:
1. 可以使用正则表达式匹配关键字,检测每一项功能是否正常。
2. 可以使用正则表达式从关键字中提取状态码,并将其与错误字符串对应表进行匹配。
3. 可以将检测结果保存到文件中。
基本代码如下:
```python
import re
class LogChecker:
def __init__(self, log_path, keyword_patterns, error_code_table):
self.log_path = log_path
self.keyword_patterns = keyword_patterns
self.error_code_table = error_code_table
self.result = {}
def check(self):
with open(self.log_path, 'r') as f:
for line in f:
for pattern in self.keyword_patterns:
match = re.search(pattern, line)
if match:
status_code = match.group(1)
if status_code in self.error_code_table:
error_msg = self.error_code_table[status_code]
self.result[error_msg] = self.result.get(error_msg, 0) + 1
break
def save_result(self, output_path):
with open(output_path, 'w') as f:
for error_msg, count in self.result.items():
f.write(f'{error_msg}: {count}\n')
```
其中,`log_path` 为日志文件路径,`keyword_patterns` 为关键字匹配的正则表达式列表,`error_code_table` 为状态码与错误字符串的对应表。`check()` 方法遍历日志文件,使用正则表达式匹配关键字,并从中提取状态码进行匹配。`save_result()` 方法将检测结果保存到指定文件中。
使用示例:
```python
log_path = 'test.log'
keyword_patterns = [
r'STARTING (.+)',
r'FINISHED (.+)',
r'ERROR (.+)'
]
error_code_table = {
'100': 'Invalid parameter',
'200': 'File not found',
'300': 'Permission denied'
}
checker = LogChecker(log_path, keyword_patterns, error_code_table)
checker.check()
checker.save_result('result.txt')
```
在以上示例中,我们定义了 `log_path`、`keyword_patterns` 和 `error_code_table`,并将它们传递给 `LogChecker` 类进行初始化。然后,我们调用 `check()` 方法进行检测,再使用 `save_result()` 方法将结果保存到文件中。
希望这个框架对您有所帮助。