You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析request.log日志文件并转换为指定结构的JSON数组对象

实现方案

你可以直接通过正则匹配日志里的请求标记行完成解析,不需要处理后续冗余的请求头JSON块,逻辑简单且不容易因为日志格式微调报错:

  • 核心匹配规则:所有请求的方法、URL都固定在### 开头的行,用正则/###\s+([A-Z]+)\s+(https?:\/\/\S+)/g就能批量提取对应字段
  • 提取到原始URL后,如果需要做域名替换、路径截断(比如你示例输出里把https://test.csdf/auth/send_otp调整为https://test.co/otp),直接加自定义字符串处理逻辑即可

Node.js 实现代码

const fs = require('fs');
// 读取本地日志文件
const logContent = fs.readFileSync('./request.log', 'utf-8');
const requestMatchReg = /###\s+([A-Z]+)\s+(https?:\/\/\S+)/g;
const parseResult = [];
let currentMatch;

while ((currentMatch = requestMatchReg.exec(logContent)) !== null) {
  let [, method, originalUrl] = currentMatch;
  // 这里可以加自定义URL处理逻辑,比如替换域名、截断路径
  // 示例:originalUrl = originalUrl.replace('test.csdf/auth/', 'test.co/')
  parseResult.push({
    method,
    url: originalUrl
  })
}

// 最终输出符合要求的JSON数组
console.log(JSON.stringify(parseResult, null, 2));

Python 实现代码

import re
import json

with open('request.log', 'r', encoding='utf-8') as f:
    log_content = f.read()

match_pattern = re.compile(r'###\s+([A-Z]+)\s+(https?://\S+)')
parse_result = []
for method, original_url in match_pattern.findall(log_content):
    # 这里加自定义URL处理逻辑即可
    parse_result.append({
        "method": method,
        "url": original_url
    })

print(json.dumps(parse_result, indent=2, ensure_ascii=False))

注意:你给出的预期输出里的URL和日志原始URL存在域名、路径差异,这部分属于业务自定义的转换规则,按实际需求在代码注释标注的位置补充处理逻辑即可。

内容的提问来源于stack exchange,提问作者N Hilmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:48:10