2012-06-09 43 views
4

我有這樣的代碼的Apache模塊在我的工作,這是使用ap_hook_child_init()註冊地:ap_log_error不記錄在我的Apache模塊

static class_name *mc; 

static void child_init(apr_pool_t *pool, server_rec *s) 
{ 
    ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, "this pointer should be null: %pp", mc); 
    mc = mc_alloc(); 
    ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, "this pointer should not be null: %pp", mc); 
} 

的問題:我沒有看到這些日誌信息!

我確定這個函數被調用,並且mc_alloc()的調用正在工作,因爲當我從模塊的其他部分(如請求處理程序)中登錄時,我看到日誌消息並獲取有效結果指針。這也告訴我日誌記錄正在工作。

是我的代碼錯了還是我的期望?在ap_hook_child_init回調期間,不能發出日誌消息嗎?如果不是,我還可以記錄一個孩子是否被初始化?

+0

好的。我做了一些其他的測試,我確定它被調用。我做的明顯的測試是在請求處理程序中檢查NULL,然後將對'mc_alloc()'的調用註釋掉,然後重試。結果是不同的,所以現在我確定了。 – mlibby

回答

4

所以事實證明,這不是一個代碼問題,這是一個配置問題。

/etc/apache2/sites-enabled/my_site.conf我已經在我的<VirtualHost>部分中設置了LogLevel Info,該部分顯然沒有將其設置爲整個服務器。

我發現這個從APLOG_INFO更改爲APLOG_CRIT。一旦我做到了,消息就出現在日誌中。所以我知道服務器正確記錄和我的代碼工作。

這使我相信有單獨的可能的LogLevel設置,並且我可能對我的位置過於具體。顯然需要在<VirtualHost>部分之外添加LogLevel Info指令來設置整個服務器記錄比默認更多的消息。