2010-11-19 17 views
1

我在我的應用程序中選擇了幾個地方,我想總是日誌值。我可以簡單地使用Log.Info()並將其留在那裏,但我更喜歡一個無法通過意外更改級別配置來禁用的解決方案。在這種情況下,只要log4net未被禁用,我希望這些日誌語句觸發。log4net的使用總是記錄一個值

什麼是最好的方法?

只是看着someinformation它看起來像一個選項是創建一個值設置爲緊急以上的自定義級別,但我不知道這是一個殘酷的黑客副作用我沒有意識到或合法選項。我無法在文檔中找到任何明確的指導。

+0

你試過我的回答嗎?它有幫助嗎? – wageoghe 2010-12-08 17:45:34

回答

0

我不是一個log4net的專家,但這樣的事情可能會做你想要什麼:

此代碼將得到LogManager的指定logger,將編程設置其級別爲「ALL」。如果稍後在代碼中檢索此記錄器,即使日誌級別在配置文件中設置爲OFF,它也會始終記錄日誌。

要測試,設置根日誌級別的配置文件「OFF」,然後輸入如下代碼:

log4net.ILog log = log4net.LogManager.GetLogger("abc"); 
    log.Info("this won't log because root logger is OFF"); 

    //Reset the level 
    log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)log.Logger; 

    l.Level = l.Hierarchy.LevelMap["ALL"]; 

    //Try to log again 
    log.Info("this will log because we just reset abc's level to ALL"); 

我測試,它似乎工作。

我發現這個信息herehere