我想让 Varnish 记录请求。我找到了命令 varnishlog -a -w /var/log/varnish.log
,但它不会记录任何内容。
然后我发现Varnish默认是不写日志的。但是,我无法找到日志记录的配置选项。
最佳答案
如果你想在 NCSA Common Log Format 中记录 HTTP 请求您需要使用 varnishncsa
.在 CentOS/RedHat 上,Varnish RPM 包包含一个 varnishncsa init 脚本,您可以使用它来启动日志记录。默认情况下,它登录到 logfile="/var/log/varnish/varnishncsa.log"
.
此外,如果您希望通过单个 Varnish 安装为多个不同的主机提供服务,您还需要在日志中包含主机名。这可以通过 /etc/sysconfig/varnishncsa
中的以下设置来完成
DAEMON_OPTS="$DAEMON_OPTS -F '%{Host}i %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"'"
请注意,Anshu 链接中描述的方法仅记录 Varnish 传递到后端服务器的请求。缓存命中请求永远不会被记录(在 Varnish 5.0 之前 - 见下文)。因此,以这种方式收集的 HTTPD 日志不能用于统计分析。
更新:正如@VikrantPogula 所提到的,从 Varnish 5.0 开始,所有客户端请求都会被记录下来——包括缓存命中。这是默认行为,可以使用
-c
显式打开转变。
关于logging - 如何设置 Varnish 日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705252/