问候,先生。 你能帮我解析json日志文件吗?
日志字符串示例:
{"ip": "176.122.232.00", "host": "cdn.tv.com", "path": "/dtv/c_1199622700411804.ts", "status": "200", "user_agent": "YX_XY/1.0.1.0.3364", "length": 1392120, "date": "2016-10-09T20:00:00+03:00"}
我正在使用这种格式:
goaccess -f access.log --log-format='%^: "%h", %^:%^, %^: "%R", %^: %s, %^: "%u",%^: %b, %^: "%dT%t+%^"' --date-format='%Y-%m-%d' > /report.html
并得到
Parsing... [1 734 743] [867 371/s]s]
GoAccess - version 0.8.5 - Dec 5 2014 06:36:01
Fatal error has occurred
Error occured at: goaccess.c - main - 832
Nothing valid to process
我的日志格式有什么问题?
谢谢。
这应该有效:
goaccess -f access.log --log-format='%^: "%h",%^: "%v",%^: "%U",%^: "%s",%^: "%u",%^: %b,%^: "%dT%t+%^"%^' --date-format='%Y-%m-%d' --time-format='%T' --http-protocol=no --http-method=no
感谢您的回复,
我有这个错误
goaccess: unrecognized option '--time-format=%T'
(可能我有新版本)
然后我删除了选项时间格式并又出现了 2 个错误。
goaccess: option '--http-protocol' doesn't allow an argument
goaccess: option '--http-method' doesn't allow an argument
当我删除所有这些选项时,我终于得到了我的报告。
顺便说一下,您能否为后代解释一下这种日志格式? :)
最有用的评论
对于那些无法识别的选项,请升级到最新版本。
大的问题,在日志格式中最重要的部分之一是下面的字符
%^
或任何其他说明符。 解析器将查找该字符,例如,如果我有%^:
,这意味着我希望解析器跳过所有内容,直到找到:
。 这很有帮助,所以我不必使用一堆%^
来忽略字段。 即将推出的版本将通过显示哪些令牌与日志格式不匹配来更好地处理这个问题,这将使事情变得更容易。有关可用日志说明符的列表,请查看此。