2013-08-28 103 views
2

嗨,大家好,我想知道是否有可能在Apache的虛擬主機上創建一個帶有日誌的別名?Apache別名與日誌文件

這是我到目前爲止有:

<VirtualHost www.mycompany.com> 
    ServerName www.mycompany.com 
    DirectoryIndex Company_Home.html 
    ServerAdmin [email protected] 
    DocumentRoot C:/Project/Sites/Company/Main/htdocs 
    ErrorLog C:/Project/Sites/Company/Main/logs/Error_log.log 
    TransferLog C:/Project/Sites/Company/Main/logs/Access_log.log 
    Alias /public C:/Project/Sites/Company/Sub/Public/htdocs/Public.html 
    Alias /stage C:/Project/Sites/Company/Sub/Stage/htdocs/Stage.html 
    Alias /development C:/Project/Sites/Company/Sub/Development/htdocs/Development.html 

我想創建一個訪問,並在所有3別名錯誤日誌。

回答

1

使用文件名是不可能的,因爲指令ErrorLogTransferLog都是服務器或虛擬主機級別,因此不能爲特定別名指定。

然而,你也許可以通過使用過程到其中的日誌將被Apache管道輸送以獲得所需的行爲,例如:

ErrorLog |C:/Project/Sites/Company/error_logger.exe 
TransferLog |C:/Project/Sites/Company/transfer_logger.exe 

每個程序都會被Apache開始,將接收日誌他們的標準輸入行。您可以隨意在程序中對這些字符串進行任何操作。

在這裏解決的主要問題是,強制日誌格式包含別名的信息,以便您的程序可以正確的日誌行重定向到相應的文件。

這是很容易的的TransferLog有這個信息,因爲這將可爲URL的前導部分被記錄(%U標誌在日誌格式)。

錯誤日誌,它要困難得多,大概是不可能的,即使因爲各種模塊,諸如PHP可以生成完全缺乏任何URL信息的錯誤消息。

編輯:

爲了記錄在案,阿帕奇2.3.9推出了新的指令ErrorLogFormat允許的錯誤日誌行定製了很多,但是,%U標誌是令人驚訝的不存在,所以它在這裏對你不會有幫助。

+0

噢好吧,那正是我想要的,謝謝SirDarius – MKSA