我们都知道access.log
文件记录了Squid的访问信息:
1286536351.746 41762 192.168.1.17 TCP_MISS/200 5340945 GET http://v15.lscache3.c.youtube.com/videoplayback? - DIRECT/122.160.120.150 video/x-flv
1286536351.746 41762 192.168.1.18 TCP_MISS/200 5340945 GET http://v15.lscache3.c.youtube.com/videoplayback? - DIRECT/122.160.120.150 video/x-flv
我们也知道Squid使用该文件/etc/resolv.conf
来确定它正在处理的DNS服务器,因此如果我们希望Squid处理本地DNS服务器,我们在文件中输入本地DNS服务器/etc/resolv.conf
。
如果本地 DNS 服务器有这样的记录(在其反向区域 (1.168.192.in-addr.arpa))怎么办:
$TTL 60 ; 1 minute
17 PTR Mark.
18 PTR Mike.
我可以配置 Squid 进行反向查找(询问日志文件中 IP 地址的名称)并将名称添加到记录中access.log
,例如:
我想做这样的记录:
1286536351.746 41762 192.168.1.17 ......
是这样的:
1286536351.746 41762 192.168.1.17 Mark ......
我怎样才能达到这个目标?
我可以使用像%>a
和一样的 Squid 日志格式%>A
来得到我想要的吗?
答案1
一种方法是在文件中使用此指令squid.conf
来让日志文件显示 FQDN 而不是 IP:
log_fqdn on
来源:http://www.squid-cache.org/Doc/config/log_fqdn/
但这会忽略<IP> <Name>
您在问题中显示的格式。为此,如果您查看该指令的文档,logformat
则会列出以下默认格式:
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
logformat common %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
logformat combined %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
logformat referrer %ts.%03tu %>a %{Referer}>h %ru
logformat useragent %>a [%tl] "%{User-Agent}>h"
这些选项被列为参数,您可以使用它们来构建自己的格式:
>a Client source IP address
>A Client FQDN
所以我希望您可以将其组合在一起以获得您所询问的格式。