Я разрабатываю плагин для стороннего приложения, и для каждого «запуска» этого плагина я хочу эксклюзивный файл журнала.
Я построил следующий класс.
public class LogFileRepository
{
private readonly Common.Configuration.Settings _configSettings;
private const string InstanceName = "AutomationPlugin.Logging";
private readonly ILoggerRepository _repository;
public LogFileRepository (Common.Configuration.Settings configSettings)
{
_configSettings = configSettings;
var repositoryName = $"{InstanceName}.Repository";
_repository = LoggerManager.CreateRepository(repositoryName);
}
public ILog GetLog(string name)
{
var logger = LogManager.Exists(_repository.Name, name);
if (logger != null)
{
return logger;
}
var filter = new LevelMatchFilter {LevelToMatch = Level.All};
filter.ActivateOptions();
var appender = new RollingFileAppender
{
AppendToFile = false,
DatePattern = "yyyy-MM-dd",
File = String.Format(_configSettings.Paths.LogFileTemplate, name),
ImmediateFlush = true,
Layout = new PatternLayout("%n%date{ABSOLUTE} | %-7p | %m"),
LockingModel = new FileAppender.MinimalLock(),
MaxSizeRollBackups = 1,
Name = $"{InstanceName}.{name}.Appender",
PreserveLogFileNameExtension = false,
RollingStyle = RollingFileAppender.RollingMode.Once
};
appender.AddFilter(filter);
appender.ActivateOptions();
BasicConfigurator.Configure(_repository, appender);
return LogManager.GetLogger(_repository.Name, name);
}
}
То, что я намеревался , эта функция должна сделать для метода GetLog
, возвращающего файл журнала (с указанным именем), если LogManager уже имеет его; если файл журнала не существует, он должен создать экземпляр и вернуть его.
Это происходит . При первом запуске плагина создается файл журнала и записывается в него; при втором запуске плагина создается и записывается новый файл журнала, но все сообщения также записываются в первый файл журнала . При третьем запуске все сообщения записываются в два существующих файла журнала , а также в новый третий файл журнала.
Почему? Есть ли в * 1019 что-то, что я, казалось бы, неправильно понял / неправильно настроил? Я хочу эксклюзивный файл журнала для каждого параметра name
.