首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >普通的goaccess日志解析不起作用

普通的goaccess日志解析不起作用
EN

Stack Overflow用户
提问于 2014-05-14 12:02:32
回答 1查看 1.3K关注 0票数 2

我试图设置goaccess来分析一些高度定制的apache输出。我不想直接写.goaccessrc文件,所以决定简化日志(在文本编辑器中),然后慢慢开始。然而,我甚至不能让这个微不足道的例子起作用。我也尝试过一些例子,标记为“应答”,但我仍然得到了相当简洁的“Nothing valid to process”消息。

下面是我的简化日志文件中的一行:

代码语言:javascript
复制
2014-05-14 06:26:18 "GET / HTTP/1.1" 200 37.157.246.146

这是我的.goaccessrc:

代码语言:javascript
复制
date_format %Y-%m-%d %H:%M:%S
log_format %d "%r" %s %h

我确信.goaccessrc文件在正确的位置并被读取,因为如果我删除它,在运行goaccess时我就会得到Log配置窗口。我肯定这是件微不足道的事,但我就是看不见。下面是我最近的终端会话的全部输出:

代码语言:javascript
复制
[root@dev ~] # cat .goaccessrc
date_format %Y-%m-%d %H:%M:%S
log_format %d "%r" %s %h
[root@dev ~] # cat /var/log/apache2/simple.log
2014-05-14 06:26:18 "GET / HTTP/1.1" 200 37.157.246.146
[root@dev ~] # goaccess -f /var/log/apache2/simple.log

GoAccess - version 0.7.1 - Apr 18 2014 21:28:20

An error has occurred
Error occured at: goaccess.c - render_screens - 456
Message: Nothing valid to process.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-19 12:30:46

好的,完整的答案见这里。基本上可以归结为这一点。所有解析似乎都是由log_format驱动的,标记分隔符是空格字符。因此,在上面的示例中,log_format中的第一个log_format占位符匹配到2014-05-14的末尾,然后停止。然后,当找到时间部分的开头时,下一个令牌("%r")失败。

解决上述问题的办法是:

代码语言:javascript
复制
date_format %Y-%m-%d
log_format %d %^ "%r" %s %h

它只匹配日期(仅与时间匹配),然后忽略直到第一个"字符的所有内容,然后匹配请求URL,最后匹配状态和主机地址。

注意,除非日期和时间是单个标记(没有空格),否则无法成功地匹配时间部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23654204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档