使用 log4net 自动创建 appender

Automatically create appenders with log4net

在 C# 代码中,我需要创建多个具有不同名称的 log4net 记录器来区分写入的日志。一个记录器可以称为 MyNamespace.MyClass.1,另一个记录器可以称为 MyNamespace.MyClass.2,等等。然后将日志写入多个文件:MyNamespace.MyClass.1.log、MyNamespace.MyClass.2.log,等等

问题是必须在配置中手动添加段落,每个段落只对应一个记录器名称。

<appender name="logger1" type="log4net.Appender.RollingFileAppender">
  <file value="Logs/MyNamespace.MyClass.1.log" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maximumFileSize value="2MB" />
  <maxSizeRollBackups value="10" />
  <staticLogFileName value="true" />
  <threshold value="INFO" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger %ndc: %message (%file:%line)%newline" />
  </layout>
</appender>

<logger name="MyNamespace.MyClass.1">
  <level value="INFO" />
  <appender-ref ref="logger1" />
</logger>

是否有一种解决方案可以在不编写 n 次此代码的情况下对 n 个记录器进行泛化?

您可以以编程方式配置多个记录器。请参阅下面的 link:

Log4Net: Programmatically specify multiple loggers