log4net - 用于汇编的不同日志文件

时间:2012-02-10 09:38:28

标签: c# .net plugins log4net log4net-configuration

我有一个应用程序正在加载带有反射的PlugIn-Modules。 应用程序在app.config中定义了一个log4net-log-appender,如:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="logs\xxx.log" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="1MB" />
  <staticLogFileName value="true" />
  <threshold value="DEBUG" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger{2} - %message%newline" />
  </layout>
</appender>

我在代码中得到了Logger:

private static readonly ILog log = LogManager.GetLogger(typeof(Indexer));

现在,我正在寻找一种方法来为每个模块(程序集)声明不同的日志文件,该模块作为带有反射的PlugIn加载。

第一个问题是,模块一起使用Business-Library-Classes(它们在一个用于所有模块的程序集中),它们也生成日志条目。此条目也应插入模块的日志文件中。

第二个问题是,我不知道开发时的模块。所以我无法在app.config中插入一些配置。

1 个答案:

答案 0 :(得分:2)

  

第二个问题是,我不知道发展时的模块。所以我无法在app.config中插入一些配置。

这表明在配置文件中可能无法实现。添加新插件时,可以添加代码以为插件添加新的appender。

她的一些(code)让你受到启发:

// Setup RollingFileAppender
  log4net.Appender.RollingFileAppender fileAppender = new log4net.Appender.RollingFileAppender();
  fileAppender.Layout = new log4net.Layout.PatternLayout("%d [%t]%-5p %c [%x] - %m%n");
  fileAppender.MaximumFileSize = "100KB";
  fileAppender.MaxSizeRollBackups = 5;
  fileAppender.RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Size;
  fileAppender.AppendToFile = true;
  fileAppender.File = fileName;
  fileAppender.Name = "XXXRollingFileAppender";
  log4net.Config.BasicConfigurator.Configure(fileAppender);

您需要添加它只是来自您要记录的插件程序集,并且可能已从已配置的RollingFileAppender中省略它们。