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

Azure Log Analytics自定义日志解析优化:去方括号及最佳方案咨询

优化后的KQL日志解析方案

针对你的日志格式和提取需求,这里提供更优雅高效的KQL查询,直接生成无多余格式的结构化字段,同时覆盖两种日志格式(启动操作和带结果的操作):

ShelSA_cardMovment_CL
| parse RawData with dt:datetime "[" Client ":" Action "]"
| parse RawData with dt:datetime "[" Client ";" Action ":" Result_raw ")"
| extend 
    Result = trim(")", Result_raw),
    dt = coalesce(dt, todatetime(substring(RawData, 0, 19)))
| project dt, Client, Action, Result_raw, Result

关键优化点说明:

  • 精准匹配日志格式:通过两次parse分别适配两种日志结构([X:Action]和[X;Action:Result)),KQL会自动为每行匹配对应的解析规则,无需额外判断
  • 直接提取字符串字段:避免了原方案中split产生的数组类型字段,Client和Action直接是纯净字符串,不会出现["XXX"]这类格式
  • 时间字段自动类型转换:将操作时间直接解析为datetime类型,后续可直接用于时间范围筛选、聚合等操作,比手动截取字符串更可靠
  • 结果字段优雅清理:用trim()去除结果末尾的),比replace_string()更精准(仅清理末尾的目标字符)
  • 兜底逻辑保障:coalesce()确保即使日志格式异常,也能通过截取前19位字符生成时间字段,避免数据丢失

输出的结构化字段:

  • dt:操作时间(datetime类型)
  • Client:客户端标识(纯净字符串)
  • Action:操作名称(纯净字符串)
  • Result_raw:原始结果内容(保留末尾的))
  • Result:清理后的最终结果

对比原方案的优势:

原方案多次使用parse+split的组合,不仅生成冗余的数组字段,还需要额外转换清理,效率和可读性都较差。优化后的方案通过一次扫描完成多格式匹配,直接生成目标字段,代码更简洁,执行效率更高,同时完全满足你对结构化输出的需求。

内容的提问来源于stack exchange,提问作者Symon Turner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:45:35