我有一个框架库,它可以做很多事情,包括日志记录。我们正在使用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