最近研发童鞋要开发自己的日志分析系统,需要把squid 2.7版本日志改变下,这下可苦了我了。squid日志我就知道配置文件的那几个。squid日志中还需要x-forwarded-for的字段,我记得还得重新编译程序。

如下为添加x-forwarded的编译步骤:

1,tar -xzf squid.tgz

2,cd squid

3,./configure --prefix=/usr/local/squid-2.7.stable9 --enable-useragent-log --enable-referer-log --enable-default-err-language=Simplify_Chinese --enable-err-languages="Simplify_Chinese English" --disable-internal-dns --enable-underscores --enable-dlmalloc --with-pthreads --enable-epoll --enable-stacktrace --enable-removal-policies="heap,lru" --enable-delay-pools --enable-storeio="aufs,coss,diskd,ufs" --with-maxfd=65536  --enable-follow-x-forwarded-for

4,make && make install

安装完成后,在原来的配置文件中添加

forwarded_for on

开启forwarded-for转发,不然截取不到forwarded信息头

在添加日志格式的部分,我查了不少资料,squid 3.0 是在logformat 后添加的:%{X-Forwarded-For}i,可在squid 2.7不管用,配置文件报错,经过试验,终于解决此问题。

logformat日志格式中添加

"%{X-Forwarded-For}<h" 或 "%{X-Forwarded-For}>h"

因为没有外部有X-forwarded头的客户机访问,没法确认是哪个,自己汗个。。。。

再就是研发要求的特殊日志格式,实际截取是http头的内容,包括发送的和接受的。

如下是我在日志中测试的 %>h 和%<h 日志记录的文件内容

%>h的记录

Host:%20test152.xxxxxx.com%0D%0AUser-Agent:%20Mozilla/5.0%20(Windows;%20U;%20Windows%20NT%205.1;%20zh-CN;%20rv:1.9.2.16)%20Gecko/20110319%20Firefox/3.6.16%0D%0AAccept:%20text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8%0D%0AAccept-Language:%20zh-cn,zh;q=0.5%0D%0AAccept-Encoding:%20gzip,deflate%0D%0AAccept-Charset:%20GB2312,utf-8;q=0.7,*;q=0.7%0D%0AKeep-Alive:%20115%0D%0AConnection:%20keep-alive%0D%0ACookie:%20user_ident=1303698677536520%0D%0AIf-Modified-Since:%20Wed,%2020%20Apr%202011%2005:49:33%20GMT%0D%0ACache-Control:%20max-age=0%0D%0A

%<h的记录

HTTP/1.1%20304%20Not%20Modified%0D%0AServer:%20nginx%0D%0ADate:%20Mon,%2025%20Apr%202011%2008:58:30%20GMT%0D%0ALast-Modified:%20Wed,%2020%20Apr%202011%2005:49:33%20GMT%0D%0ACache-Control:%20max-age=300%0D%0AX-Cache:%20MISS%20from%20cache.chinaitv.cc%0D%0AVia:%201.1%20cache.xxxxxxx.com:80%20(squid/2.7.STABLE9)%0D%0A%0D

看以上记录可能有心人就看出默认配置文件中日志格式的 "%{Referer}>h" "%{User-Agent}>h" 怎么截取到的。我日志就按照此方式截取的,想要啥就截取啥好了。看到这还不明白的童鞋,可以对照默认配置文件中记录的日志,应该不难理解。