【问题标题】:log4net - different log-files for assemblylog4net - 用于组装的不同日志文件
【发布时间】:2012-02-10 09:38:27
【问题描述】:

我有一个应用程序正在加载带有反射的插件模块。 应用程序在 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));

现在,我正在寻找一种方法来为每个模块(程序集)声明不同的日志文件,这些模块是通过反射加载为插件的。

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

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

【问题讨论】:

  • 那么,如果从不同的程序集调用相同的实例方法,您希望其私有记录器写入不同的日志文件吗?这是不可能的。你为什么要这样做?看来您使用日志记录的目的不仅仅是故障排除。
  • @Groo - 不,不同的程序集使用了不同的实例(但相同的类)。
  • 但是它们是从同一个appdomain(单个应用程序)中的不同程序集中使用的?如果您的记录器被static 字段引用(如您所示),那么只有一个记录器实例。

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


【解决方案1】:

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

这表明它在配置文件中可能是不可能的。添加新插件时,您可以添加代码为插件添加新的附加程序。

她的一些 (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 中省略它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多