我正在寻找一种以通用格式存储日志的方法,以便大多数工具可以轻松识别和解析它们。
我对 goaccess 工具自动识别并支持响应时间的格式感兴趣。
到目前为止,似乎默认日志设置无法被识别。
答案1
Nginx 默认会输出组合日志格式(NCSA)。
如果您从配置对话框中选择第一个选项(或者从配置文件中永久取消注释 NCSA 组合日志格式),GoAccess 将自动识别它。
如果您有兴趣记录请求时间,那么您需要修改 nginx 配置文件并添加自定义日志格式:
vi /etc/nginx/nginx.conf
然后加:
log_format timed_combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '$request_time';
并更改访问日志以使用新格式:
access_log /var/log/nginx/timed.log timed_combined;
并重启 nginx
确保你的 access.log 现在正在记录请求时间。然后你可以将其添加%T
到 goaccess 中log-format
:
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" %T
答案2
访问他们的页面上写道:
Apache/Nginx 通用/组合 + VHosts
如果您的日志无法解析,那么您需要查看 GoAccess 日志并查看哪里出了问题。
此外:
GoAccess 允许任何自定义日志格式字符串。
因此您可能需要研究如何在自定义格式上指导该工具。