如何将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
相关产品推荐
相关产品推荐

