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

如何将W3C格式日志转换为NCSA格式适配GoAccess解析?

解决GoAccess无法解析cPanel access_log日志的问题

不用特意转换日志格式,两种方案任你选:

方案一:直接让GoAccess识别原日志格式

cPanel的access_log有固定字段结构,直接给GoAccess指定自定义格式就能解析,不用修改原日志。

执行这条命令:

goaccess /usr/local/cpanel/logs/access_log --log-format='%h %^ %u [%d:%t %^] "%r" %s %b "%R" "%u" "%^" "%^" %^' --date-format='%m/%d/%Y' --time-format='%H:%M:%S'

参数说明:

  • %h 匹配客户端IP
  • %^ 代表忽略对应位置的字段
  • %u 匹配用户名(比如日志里的root)
  • %d:%t 对应日期和时间格式,和后面的--date-format、--time-format配合使用
  • %r 匹配完整请求行
  • %s 匹配状态码
  • %b 匹配响应内容大小
  • %R 匹配来源站点

方案二:转换日志到你想要的格式

如果一定要把日志改成你示例里的样式,用sed命令批量处理:

sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+) - ([a-z]+) \[([0-9]{2})\/([0-9]{2})\/([0-9]{4}):([0-9]{2}:[0-9]{2}:[0-9]{2}) ([+-][0-9]{4})\] "(.*)" ([0-9]+) ([0-9]+) "([^"]+)" "(.*)" "[^"]+" "[^"]+" [0-9]+/\1 - - [\3\/\4\/\5:\6 \7] "\8" \9 \10 "\11" "\12"/' /usr/local/cpanel/logs/access_log > converted_access_log

这条命令会把原日志里的用户名(比如root)替换成-,并去掉末尾多余的几个字段,生成名为converted_access_log的新日志文件。

之后直接用GoAccess解析转换后的文件即可:

goaccess converted_access_log

内容的提问来源于stack exchange,提问作者Mohamed Samir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:03:26