我有一个应用程序正在加载带有反射的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中插入一些配置。
答案 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中省略它们。