1. 程式人生 > >ATS 4.2.3自定義日誌檔案格式的方法

ATS 4.2.3自定義日誌檔案格式的方法

我只是總結歸納了別人的方法,並做了實際驗證,在這裡記錄一下,以備大家參考,向參考文獻中的各位前輩致敬。

ATS預設的日誌格式是squid.log,我們可以在/var/log/trafficserver目錄下面使用下面的命令檢視

traffic_logcat -f squid.log

-f可以省略,看到的日誌資訊如下:



配置下面的選項來開啟自定義日誌格式

CONFIG proxy.config.log.custom_logs_enabled INT 1
CONFIG proxy.config.log.squid_log_enabled INT 0
CONFIG proxy.config.log.xml_config_file STRING logs_xml.config
其中,logs_xml.config檔案內容如下
<LogFormat>
  <Name = "access"/>
  <Format = "%<cqtq> %<ttms> %<pssc> %<sssc> [%<cqtt>] %<{X-Forwarded-For}cqh> \"%<cqtx>\" %<psql> \"%<pqsi>\" %<crc>:%<phr> %<{Referer}cqh> \"%<{User-Agent}cqh>\" %<psct>"/>
</LogFormat>


<LogObject>
  <Format = "access"/>
  <Filename = "access"/>
</LogObject>
得到的access.log的日誌如下,第2個200是源站響應狀態碼
1429609187.040 488 200 200 [17:39:47] - "GET http://m3.biz.itc.cn/pic/new/n/90/98/Img7669890_n.jpg HTTP/1.1" 44010 "61.135.132.59" TCP_MISS:DIRECT http://book.sohu.com/s2015/xlldtb/ "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0" image/jpeg

另外根據業務需要也可以如下的自定義格式

<Format = “%<cqtq> %<ttms> %<{X-Forwarded-For}cqh> %<crc>/%<pssc> %<pscl> %<cqhm> %<cquuc> %<cqhv> %<phr>/%<pqsi> %<psc
t> \”%<{Referer}cqh>\” \”%<{User-Agent}cqh>\” %<shn> %<sscl>”/>

<Format = "%<cqts> %<ttms> %<chi> %<crc> %<pssc> %<psql> %<cqhm> %<cquuh> %<cquup>"/>

然後reload配置檔案

traffic_line -x

在日誌目錄下面,使用

tail -f access.log

看到如下日誌


豪哥給的這個例子很有啟發性,值得回味:

logs_xml.config的格式在檔案中有例子,並且在admin guide中有詳細的說明, 我們以線上需要記錄非淘寶的所有請求為例:


<LogFormat>
  <Name = "taobao"/>
  <Format = "combined [%<cqtn>] %<chi> %<phi> 81 %<ttms> \"%<{Referer}cqh>\" \"%<cqtx>\" %<pssc> %<cqhl> %<psql> %<psct> %<crc> \"%<{User-Agent}cqh>\"" />
</LogFormat>


<LogFilter>
    <Name = "not_taobaocdn.com"/>
    <Condition = "shn CASE_INSENSITIVE_CONTAIN taobaocdn.com"/>
    <Action = "REJECT"/>
</LogFilter>


<LogFilter>
    <Name = "not_taobao.com"/>
    <Condition = "shn CASE_INSENSITIVE_CONTAIN taobao.com"/>
    <Action = "REJECT"/>
</LogFilter>


<LogObject>
  <Format = "taobao"/>
  <Filename = "tb_squid"/>
  <Filters = "not_taobaocdn.com,not_taobao.com"/>
  <CollationHosts = "console1.cn63:8085"/>
</LogObject>
我們定義了一個自定義的日誌格式taobao


我們定義了2個反的過濾條件
定義了一個日誌收集方式:將滿足非taobao.com非taobaocdn.com的訪問日誌記錄 到遠端機器console1.cn63上的tb_squid.log中

參考文獻