Log-Files
是否有免費的解決方案來計算 apache 文件中上下文根的數量?
我有一個 apache 日誌文件。我需要報告有多少行(請求)來自特定的上下文根。apache 日誌已經以斜杠開頭,上下文根是第二個斜杠。
範例 Apache 日誌:
11.222.33.44 - - [14/Feb/2013:00:27:33 -0600] "GET /lifecontent/monitor?test=siteseer&format=siteseer HTTP/1.1" 200 275 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)" "SSL=on" 111.22.333.44 - - [14/Feb/2013:00:29:29 -0600] "GET /lc/Brokerage%20Manager/IDG%20Licensing%20and%20Appointment%20Process/IDG%20Franchise%20Reference%20Manual HTTP/1.1" 302 - "-" "(Windows NT)" "SSL=-"
兩個上下文根是**“/lifecontent/”和“/lc”**
不確定哪種工具最好?我對 GUI 或批處理解決方案感到滿意。
我主要是想弄清楚每個上下文根在 apache 文件中使用的百分比。(理想情況下,它可以一次搜尋多個文件,但不是必需的。)
你可以用一個簡單的 shell 腳本來做到這一點:
cut -d/ -f4 access.log | sort | uniq -c | sort -g
該
cut
命令提取第 5 個 / 分隔的欄位(即“上下文根”),sort | uniq -c
然後計算每個欄位的出現次數,並按出現次數sort -g
對其進行排序。在我的網路伺服器上執行它會給出:
5477 misc 11130 bzr 32181 raspbian 35912 files 43020 sites
我接受了 mgorven 解決方案,因為它讓我朝著正確的方向尋求最終的工作解決方案。在使用他的解決方案之後,有時會有查詢字元串值,有時上下文根沒有結束斜杠。所以“/lc/”和“/lc”和“/lc?x=y”被算作“lc”。所以我最終使用了這個解決方案:
cut -d" " -f7 access.log | cut -d? -f1 | cut -d/ -f2 | sort | uniq -c | sort -g
這將顯示被訪問的單個文件,如果僅訪問“/”,則會顯示一個空行。
我也使用 UnxUtils.zip 在 Windows 上執行此操作:http: //sourceforge.net/projects/unxutils。我需要提取的只是剪切、排序、uniq。
謝謝你mgorven!