使用 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
在 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