.. _用户手册―日志: Varnish的日志 ------------------ Varnish其中一个非常好的功能是它记录日志的方式。Varnish把日志记录到一段共享内存段中而不是记录到一个普通的日志文件中,我们叫它 VSL - Varnish共享日志。当共享内存段写满之后,Varnish会再从头写起,覆盖旧的日志数据。 这种方式要比把日志写到日志文件中快的多,而且不占用磁盘空间。此外,当你需要的时候它还能提供更多的信息。 但是从另外一个角度看,如果你忘记通过一个程序把日志保存到磁盘中,内存中的日志很快就会被覆盖。 `varnishlog` 是可以用来查看Varnish正在记录什么信息的其中一个程序。 `varnishlog`可以给你提供Varnish的原始日志,可以查看Varnish日志记录的所有信息。当然还有其他的客户端也可以查看Varnish日志,我们稍后为您介绍。 启动Varnish,然后在一个字符终端界面敲入命令 ``varnishlog``然后回车。 你会看到像下面的几行信息在慢慢的不断滚动:: 0 CLI - Rd ping 0 CLI - Wr 200 PONG 1273698726 1.0 这些信息表示Varnish主进程正在检查缓存进程是否一切正常。 现在你可以到你的浏览器中重新加载你的WEB程序页面。 .. XXX:不需要对运行的Varnish做设置,WEB程序页面就会被缓存?benc 你会看到以下几行信息:: 11 SessionOpen c 127.0.0.1 58912 0.0.0.0:8080 11 ReqStart c 127.0.0.1 58912 595005213 11 RxRequest c GET 11 RxURL c / 11 RxProtocol c HTTP/1.1 11 RxHeader c Host: localhost:8080 11 RxHeader c Connection: keep-alive 第一列是一个任意数,它是一个会话标识。第一列相同的行表示它们是来自同一个会话,并且正在由同一个线程在处理。第二列是日志信息的标签。 所有的日志条目都会贴上标签,用来标识记录的是什么类型的操作。如果标签是以‘Rx’开头的,表示是接收数据类型的操作,以‘Tx’开头的,表示是发送数据类型的操作。 通过第三列我们可以知道数据接收或发送的对象是客户端(‘c’)还是后端服务器的(‘b’)。第四列是将被记录到日志的数据。 现在,你可以使用`varnishlog`程序过滤一些数据。这个程序有些基本的参数你应该做一些了解: '-b' 只显示Varnish和后端服务器之间的流量日志信息。 当你想优化缓存命中率的时候这个参数非常有用。 '-c' 和'-b'一样,不同的是这个参数显示的是Varnish和客户端之间的流量日志信息。 '-m tag:regex' 只列出和指定正则表达式匹配的标签的会话,如果会话的标签匹配指定的正则表达式,你可以看到整个会话的过程。 .. XXX:也许应该在这里列几个命令的例子? benc 关于Varnish日志的跟多信息请参考 :ref:`ref-varnishlog`。