2015-09-14 192 views
-1

我想添加一個過濾器到Apache日誌並創建一個新文件。我的httpd的虛擬主機文件看起來像這個 -自定義日誌在Apache

<VirtualHost *:80> 
    ServerName local.com 
    ServerAlias local.com 
    DocumentRoot "/Users/preetika.shukla/apps/devices" 
    ErrorLog "/private/var/log/apache2/error_log" 
    CustomLog "|/usr/bin/grep \’test\'>>/var/log/apache2/test_access" common 
    ServerAdmin [email protected] 
    <Directory "/Users/preetika.shukla/apps/devices"> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
    Allow from all 
</Directory> 

總之,我想test_Access log file包含關於在那裏測試關鍵字只有那些日誌。怎麼這似乎沒有工作,對如何解決這個問題有任何建議?

回答

0

您可以創建一個perl腳本來使用grep命令獲取正則表達式。

+0

沒有添加grep在自定義日誌中做同樣的事情? – jeangrey

+0

perl腳本將解析原始的apache日誌文件並使用關鍵字'test'過濾行並將輸出發佈到自定義日誌文件 – kd0807

+0

@ kd0807 - 我面臨同樣的問題,但我對perl沒有任何想法腳本,你可以寫相同的Perl腳本,請:) –

0

我曾嘗試使用以下實現:

  1. 寫它具有所需的功能shell腳本(test.sh),請確保該腳本繼續運行。如果在一定的時間段後退出,服務器拋出一個錯誤: sudo tail -f /var/log/apache2/access_log | /usr/bin/grep --line-buffered test >> /var/log/apache2/test_access(在這裏,我想給grep在訪問日誌測試)
  2. 追加虛擬主機或文件級的httpd.conf 的CustomLog「| $的/ etc /的Apache2 /extra/test.sh「common // - test.sh
  3. 重新啓動服務器並監視日誌。 :)