【发布时间】:2019-10-25 21:22:31
【问题描述】:
我对 log4net 如何管理附加程序以及发送到这些附加程序的消息有疑问。
当我将 1 条消息记录到 1 个记录器(对应于 1 个附加程序)时,消息仍然会出现在所有日志文件中(因此消息似乎会发送到所有附加程序)
我做错了什么?!
我设法在单元测试中重现了我的问题:
[Test]
public void Test()
{
var hierarchy = (Hierarchy)LogManager.GetRepository();
var patternLayout = new PatternLayout
{
ConversionPattern = "%date %level %logger - %message%newline" //CreateLayoutPattern(appenderConfiguration.Layout),
};
patternLayout.ActivateOptions();
hierarchy.Configured = true;
for (var i = 1; i < 10; i++)
{
var logFile = Path.Combine(_testLogFolder, $"SomeLog_Test{i}.csv");
var roller = new RollingFileAppender
{
Name = $"Test{i}",
AppendToFile = true,
File = logFile,
CountDirection = 1,
Layout = patternLayout,
ImmediateFlush = true,
// MaxSizeRollBackups is set to max int, software will have an independent mechanism in place (reaper) to clean up old files
MaxSizeRollBackups = int.MaxValue,
MaximumFileSize = "1MB",
RollingStyle = RollingFileAppender.RollingMode.Size,
StaticLogFileName = false,
PreserveLogFileNameExtension = true,
Threshold = Level.All
};
roller.ActivateOptions();
hierarchy.Root.AddAppender(roller);
}
// A
LogManager.GetLogger("Test1").Info("Whatever");
// Now the ALL of the log files contain the message "Whatever", why?!?! I only logged to 'Test1'
}
【问题讨论】: