Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1044380
  • 博文数量: 157
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1388
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-09 15:37
文章分类

全部博文(157)

文章存档

2023年(9)

2022年(2)

2021年(18)

2020年(7)

2017年(13)

2016年(53)

2015年(55)

我的朋友

分类: 服务器与存储

2015-05-15 10:19:09

records.config中包含三个基本的log配置:
    CONFIG proxy.config.log.custom_logs_enabled INT 0      是否定制日志,1开启 0 关闭
    CONFIG proxy.config.log.squid_log_enabled INT 1          是否打开squid日志,1开启 0 关闭
    CONFIG proxy.config.log.squid_log_is_ascii INT 0            是否对squid日志格式进行转码,1转码 0不转码

在定制ats日志前咱们先验证一下上面前三个配置的设置对日志文件内容及格式的影响:
操作步骤 组合情况1 操作步骤 组合情况2 操作步骤 组合情况3 操作步骤 组合情况4 操作步骤 组合情况5 操作步骤 组合情况6 操作步骤 组合情况7
1 清空日志文件目录 1 清空日志文件目录 1 清空日志文件目录 1 清空日志文件目录 1 清空日志文件目录 1 清空日志文件目录 1 清空日志文件目录
2 441 CONFIG proxy.config.log.custom_logs_enabled INT 0 2 441 CONFIG proxy.config.log.custom_logs_enabled INT 0 2 441 CONFIG proxy.config.log.custom_logs_enabled INT 0 2 441 CONFIG proxy.config.log.custom_logs_enabled INT 1 2 441 CONFIG proxy.config.log.custom_logs_enabled INT 1 2 441 CONFIG proxy.config.log.custom_logs_enabled INT 1 2 441 CONFIG proxy.config.log.custom_logs_enabled INT 1
442 CONFIG proxy.config.log.squid_log_enabled INT 1 442 CONFIG proxy.config.log.squid_log_enabled INT 0 442 CONFIG proxy.config.log.squid_log_enabled INT 1 442 CONFIG proxy.config.log.squid_log_enabled INT 1 442 CONFIG proxy.config.log.squid_log_enabled INT 1 442 CONFIG proxy.config.log.squid_log_enabled INT 0 442 CONFIG proxy.config.log.squid_log_enabled INT 0
443 CONFIG proxy.config.log.squid_log_is_ascii INT 0 443 CONFIG proxy.config.log.squid_log_is_ascii INT 0 443 CONFIG proxy.config.log.squid_log_is_ascii INT 1 443 CONFIG proxy.config.log.squid_log_is_ascii INT 0 443 CONFIG proxy.config.log.squid_log_is_ascii INT 1 443 CONFIG proxy.config.log.squid_log_is_ascii INT 0 443 CONFIG proxy.config.log.squid_log_is_ascii INT 1
3 重启ats,日志目录出现日志文件:
3 重启ats,日志目录出现日志文件: 3 重启ats,日志目录出现日志文件: 3 重启ats,日志目录出现日志文件: 3 重启ats,日志目录出现日志文件: 3 重启ats,日志目录出现日志文件: 3 重启ats,日志目录出现日志文件:
-rw-r--r-- 1 root root 1454 May 14 10:52 diags.log -rw-r--r-- 1 root root 1078 May 14 11:00 diags.log -rw-r--r-- 1 root root 1078 May 14 11:00 diags.log -rw-r--r-- 1 root root 1302 May 14 11:10 diags.log -rw-r--r-- 1 root root 1301 May 14 11:15 diags.log -rw-r--r-- 1 root root 1190 May 14 11:23 diags.log -rw-r--r-- 1 root root 1190 May 14 11:25 diags.log
-rw-r--r-- 1 root root  336 May 14 10:52 error.log -rw-r--r-- 1 root root  960 May 14 11:00 manager.log -rw-r--r-- 1 root root  960 May 14 11:00 manager.log -rw-r--r-- 1 root root  960 May 14 11:10 manager.log -rw-r--r-- 1 root root  960 May 14 11:15 manager.log -rw-r--r-- 1 root root  960 May 14 11:23 manager.log -rw-r--r-- 1 root root  960 May 14 11:25 manager.log
-rw-r--r-- 1 root root  960 May 14 10:52 manager.log -rw-r----- 1 root root  271 May 14 11:00 traffic.out -rw-r----- 1 root root  271 May 14 11:00 traffic.out -rw-r----- 1 root root  271 May 14 11:10 traffic.out -rw-r----- 1 root root  271 May 14 11:15 traffic.out -rw-r----- 1 root root  271 May 14 11:23 traffic.out -rw-r----- 1 root root  271 May 14 11:25 traffic.out
-rw-r----- 1 root root  603 May 14 10:52 traffic.out
4 通过ats进行wget访问url后,出现squid.blog日志 4 通过ats进行wget访问url后,不会出现squid.blog日志 4 通过ats进行wget访问url后,会出现squid.log日志,可直接看日志不是乱码 4 通过ats进行wget访问url后,会出现access.log和squid.blog日志,一样的访问日志 4 通过ats进行wget访问url后,会出现access.log和squid.blog日志,一样的访问日志 4 通过ats进行wget访问url后,会出现access.log日志 4 通过ats进行wget访问url后,会出现access.log日志
-rw-r--r-- 1 root root  328 May 14 10:54 squid.blog -rw-r--r-- 1 root root 1078 May 14 11:00 diags.log -rw-r--r-- 1 root root 1189 May 14 11:05 diags.log -rw-r--r-- 1 root root  173 May 14 11:11 access.log -rw-r--r-- 1 root root  350 May 14 11:17 access.log -rw-r--r-- 1 root root  350 May 14 11:23 access.log -rw-r--r-- 1 root root  350 May 14 11:26 access.log
-rw-r--r-- 1 root root 1454 May 14 10:52 diags.log -rw-r--r-- 1 root root  960 May 14 11:00 manager.log -rw-r--r-- 1 root root  960 May 14 11:05 manager.log -rw-r--r-- 1 root root 1302 May 14 11:10 diags.log -rw-r--r-- 1 root root 1301 May 14 11:15 diags.log -rw-r--r-- 1 root root 1190 May 14 11:23 diags.log -rw-r--r-- 1 root root 1190 May 14 11:25 diags.log
-rw-r--r-- 1 root root  336 May 14 10:52 error.log -rw-r----- 1 root root  271 May 14 11:00 traffic.out -rw-r--r-- 1 root root   96 May 14 11:06 squid.log -rw-r--r-- 1 root root  960 May 14 11:10 manager.log -rw-r--r-- 1 root root  960 May 14 11:15 manager.log -rw-r--r-- 1 root root  960 May 14 11:23 manager.log -rw-r--r-- 1 root root  960 May 14 11:25 manager.log
-rw-r--r-- 1 root root  960 May 14 10:52 manager.log -rw-r----- 1 root root  271 May 14 11:05 traffic.out -rw-r--r-- 1 root root  328 May 14 11:11 squid.blog -rw-r--r-- 1 root root  196 May 14 11:17 squid.log -rw-r----- 1 root root  271 May 14 11:23 traffic.out -rw-r----- 1 root root  271 May 14 11:25 traffic.out
-rw-r----- 1 root root  603 May 14 10:52 traffic.out -rw-r----- 1 root root  271 May 14 11:10 traffic.out -rw-r----- 1 root root  271 May 14 11:15 traffic.out
5 squid.blog日志是二进制编码的,要通过traffic_logcat程序看,否则是乱码
# /usr/local/squid/bin/traffic_logcat  ./squid.blog 
1431572056.511 6 192.168.10.75 TCP_HIT/200 11423 GET - NONE/- text/html -

得出结论:
CONFIG proxy.config.log.custom_logs_enabled INT 0  值为1当访问时生成access.log(仅限此处,后面主要作为定制log的开关使用)
CONFIG proxy.config.log.squid_log_enabled INT 1 值为1时生成squid.blog
CONFIG proxy.config.log.squid_log_is_ascii INT 0 值为1时把生成的squid.blog转码为可直接查看的squid.log

#####################################
接下来一起定制属于自己的日志格式:
1. 首先开启:CONFIG proxy.config.log.custom_logs_enabled INT 1
2. 其次配置logs.xml.config文件:
        定义log格式,即想让哪些内容出现在log中:
        
       format"/>
       \"     \"%<{User-Agent}cqh>\"  % "/>     (字段具体含义见下文详细描述)
       

       定义log对象:
        
       
        s = "myfilter"/>  (可选的过滤规则)
       
       

        
        定义过滤规则:符合过滤规则的log行才会出现在log中,如果都不符合不执行过滤全部log输出
        
        filter"/>
       
           (注意这里的match后面的内容时全匹配,不支持部分匹配,如果写成REFRESH_HIT则过滤规则失效,log全部输出)
         

注意:官网中的这个例子是错的,不知道是不是我ats版本的问题,欢迎大家验证

        The following is an example of a LogFilter that will cause only REFRESH_HIT entries to be logged:

    
     
     
      (pssc是ats给客户端返回的状态码永远不可能匹配refresh_hit,且我测试了这里是全匹配的不支持部分匹配,还必须要写成tcp_refresh_hit)
    

3. 修改配置:CONFIG proxy.config.log.squid_log_name STRING test 日志文件的名字,默认为squid
修改log文件名为test后,通过ats访问一个url,可看到log目录下生成test.log(完整的总的访问log)和test.log_1(只包含状态为TCP_REFRESH_HIT的log)

目前我只做了这三项配置,可以实现过滤TCP_REFRESH_HIT的访问,还有其他配置项大家可以继续研究

更多配置项可参考官网:

logformat中的format的字段我整理了一些,
    :发起请求的ip
    :请求的时间,为unix时间戳
    :http版本信息,如HTTP/1.0
    :源给ats返回的状态码
    :ats给客户端响应的状态码
    :状态,如TCP_HIT
    :代理返回的长度,是header长度+body长度,如11424
    :请求的方法,如get
    :请求的响应时间,单位为毫秒
    :客户端请求,典型的url
    :反向代理模式下的remap前的url主机host
    :反向代理模式下的remap前的url路径
    :请求头长度
    :代理层次路由,如parent、direct、none
    :代理层次路由转向的地址,可以是域名也可以是ip地址
    :服务器响应内容的类型,来源与服务器响应头Content-Type
    <{Referer}cqh>:客户端http请求头
    <{User-Agent}cqh>客户端http请求头
      更多可参考官网:http://trafficserver.readthedocs.org/en/latest/admin/event-logging-formats.en.html#custom-logging-fields

发现上面的部分内容显示不了,重写也不行不知道为什么,暂时截图显示如下:


                 

阅读(2264) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~