![varnishlog - 如何仅记录某些路径?](https://linux22.com/image/739471/varnishlog%20-%20%E5%A6%82%E4%BD%95%E4%BB%85%E8%AE%B0%E5%BD%95%E6%9F%90%E4%BA%9B%E8%B7%AF%E5%BE%84%EF%BC%9F.png)
我想通过记录对某个目录中静态页面的所有请求varnishlog
。
这是我尝试过的:
varnishlog -c -q "ReqURL ~ '.*version15.*'"
有效-但我想进一步限制它。
varnishlog -c -q "ReqURL ~ '.*static.*version15.*'"
不起作用。
varnishlog -c -q "ReqURL ~ '/static/version15/tpl/my_template.html"
不起作用。
我检查过过滤 varnishlog v4,https://varnish-cache.org/docs/trunk/reference/vsl-query.html- 但没能弄清楚。
答案1
varnishlog -c -q "ReqURL ~ '/static/version15/tpl/my_template.html"
不起作用的原因是因为你忘记了末尾的单引号用于结束字符串。
这是我收到的错误:
Query expression error:
Unterminated string (Pos 49)
ReqURL ~ '/static/version15/tpl/my_template.html
这是适合您的命令:
varnishlog -c -q "ReqURL ~ '/static/version15/tpl/my_template.html'"
我已经在测试设置上模拟了该呼叫,并且运行良好。
您尝试运行的命令与显式 URL 匹配,但您的问题实际上是关于匹配目录中的静态文件。我建议使用类似这样的命令:
varnishlog -g request -q "ReqUrl ~ '/static/version15/tpl/.*\.html'"