Azure Web App通过az webapp log tail获取的实时日志无法解析问题咨询
Azure Web App流式无换行日志解析解决方案
适配命令
1. GNU awk 方案(适用于Linux环境)
替换原有sed处理逻辑,按JSON闭合符}拆分日志块,自动剥离时间前缀并生成单条JSON行:
jq 版本
az webapp log tail --resource-group ${RESOURCE} --name ${appNAME} | awk -v RS='}' '{ if (match($0, /({.*)/, m)) print m[1] "}" }' | grep '^{' | jq -r .
roarr 版本
az webapp log tail --resource-group ${RESOURCE} --name ${appNAME} | awk -v RS='}' '{ if (match($0, /({.*)/, m)) print m[1] "}" }' | grep '^{' | roarr --exclude-alien true --use-colors --output-format pretty
2. Perl 方案(全平台通用,兼容macOS/BSD环境)
利用非贪婪匹配直接提取所有完整JSON结构,不受换行符影响:
jq 版本
az webapp log tail --resource-group ${RESOURCE} --name ${appNAME} | perl -ne 's/.*?({.*?})/$1\n/g; print' | grep '^{' | jq -r .
roarr 版本
az webapp log tail --resource-group ${RESOURCE} --name ${appNAME} | perl -ne 's/.*?({.*?})/$1\n/g; print' | grep '^{' | roarr --exclude-alien true --use-colors --output-format pretty
逻辑说明
- 以JSON对象的闭合标记
}作为单条日志的拆分边界,不受全局换行符缺失的影响 - 正则匹配自动过滤每条日志前的Azure系统时间前缀,仅保留完整JSON结构
- 额外添加的
grep '^{'过滤非JSON格式的杂项日志,避免后续解析工具报错
内容的提问来源于stack exchange,提问作者Vincent Vost
相关产品推荐
相关产品推荐

