如何在 varnish 中调试 VCL?
Posted
技术标签:
【中文标题】如何在 varnish 中调试 VCL?【英文标题】:How to debug VCL in varnish? 【发布时间】:2012-09-16 13:47:53 【问题描述】:如何在 VCL 中print a log
?
我可以在屏幕上打印日志信息吗?
我可以这样做吗?
sub vcl_recv
....
log.info(req.http.host); // can i write a log here?
....
【问题讨论】:
检查您是否要求varnishd -Cf file_name
【参考方案1】:
您可以看到带有请求的 URL 的 URL varnishlog 实用程序(它能够写入日志文件)
varnishlog -i RxURL
或者使用 Varnish 3.x https://www.varnish-cache.org/docs/trunk/reference/vmod_std.html#syslog Varnish 5.1 https://varnish-cache.org/docs/5.1/reference/vmod_std.generated.html#func-syslog
例子:
import std;
sub vcl_recv
...
std.syslog(180, "RECV: " + req.http.host + req.url);
...
或者在 Varnish 2.x 上使用 C-sn-p https://www.varnish-cache.org/trac/wiki/VCLExampleSyslog
【讨论】:
VCC-compiler failed:Message from VCC-compiler: Expected an action, 'if', '' or '' ('input' Line 49 Pos 9) std.syslog(180, " RECV: " + req.http.host + req.url); 好的,是的,我们忘记导入 std vmod 函数了:import std;
varnish-cache.org/docs/3.0/reference/vmod.html
谢谢。我可以在文件 /var/log/syslog 中看到日志。
添加注释以供以后编辑:varnish vmod_std 3.0 at varnish-cache.org/docs/3.0/reference/vmod_std.html#syslog 和 4.0 at varnish-cache.org/docs/4.0/reference/…【参考方案2】:
使用vcl config file,导入额外包含的“标准库”,其中包括一堆实用函数:
import std;
# To 'varnishlog'
std.log("varnish log info:" + req.host);
# To syslog
std.syslog( LOG_USER|LOG_ALERT, "There is serious trouble");
v6.x - https://varnish-cache.org/docs/6.0/reference/vmod_generated.html#void-log-string-s
v5.x - https://varnish-cache.org/docs/5.0/reference/vmod_std.generated.html?#func-log
v4.x - https://varnish-cache.org/docs/4.0/reference/vmod_std.generated.html?#func-log
v3.x - https://varnish-cache.org/docs/3.0/reference/vmod_std.html#log
另见man varnishlog
【讨论】:
以上是关于如何在 varnish 中调试 VCL?的主要内容,如果未能解决你的问题,请参考以下文章