我有一個框架庫,它可以做很多事情,包括日誌記錄。我們正在使用log4net進行日誌記錄。這個框架有靜態日誌類日誌管理,ILog的(記錄)和靜態方法的用於記錄信息,警告,調試等靜態實例log4net從Web應用程序登錄
靜態實例記錄儀越來越初始化這樣的:
public static class LogManager
{
private static ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
static ActivityLogManager()
{
}
public static void LogDebugy(string message, params object[] messageParameters)
{
// Log the message here
}
}
我有我自己的懷疑,如果這是正確的做法。我從here看到每個需要登錄的類都應聲明一個靜態實例ILog
。
另外我看到,我將不得不在我的框架項目中指定Log4net配置文件來記錄。以爲我讀here,配置將從執行的程序集中獲取,但我沒有看到它發生。
有沒有什麼辦法可以讓我的日誌記錄從我的框架類中完成,從我的Web應用程序(用於我的Web應用程序)或其他商業庫項目(用於我的業務類庫)中獲取配置?我也想添加一些自定義信息到我的日誌(如自定義業務對象ID等,應用程序池,ServerName,ClientHostName,ClientBrowser,ClientOS,客戶端用戶等)。可能嗎?
我正在使用AdoNetAppender。
Edit1:在我的assembly.cs中使用log4net.Config.XmlConfigurator(ConfigFile = @"log4net.config", Watch = true)
指向log4net配置文件。
Edit2:我的ILog Logger
在我的框架LogManager類,因此只有一個實例爲我的應用程序生成。
通常每個需要記錄東西的類都有自己的ILog實例,最好使用一個名稱來表示某種類型的hiearchy(命名空間+類型是常見的)。這允許人們過濾消息。 NHibernate這樣做可以讓你過濾掉某些子庫中的消息並轉儲所有的SQL查詢(通常在DEBUG中記錄)。 – Skurmedel 2009-12-21 18:44:57