У меня есть большое количество asyn c целевых упаковщиков, созданных так:
var fileTarget = new FileTarget("file_"+unique_id)
{
FileName = $"{unique_id}.log"),
Layout = layout_string,
DeleteOldFileOnStartup = false,
KeepFileOpen = true,
AutoFlush = false
};
var asyncFileTarget =
new NLog.Targets.Wrappers.AsyncTargetWrapper(fileTarget, 10000, NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction.Block);
asyncFileTarget.Name = unique_id;
m_job_logger_factory.Configuration.AddTarget(asyncFileTarget);
m_job_logger_factory.Configuration.AddRule(TranslateEnum(logLevel), NLog.LogLevel.Fatal, asyncFileTarget, assignedLogger.Name);
m_job_logger_factory.ReconfigExistingLoggers();
Каждой цели назначен отдельный регистратор. Затем я регистрирую пару строк для каждой из созданных целей через назначенных им регистраторов. В файл еще ничего не записано, так как они асин c, а очередь не заполнена.
Теперь, если я сделаю
Target t = m_job_logger_factory.Configuration.FindTargetByName(unique_id);
t.Flush((e) => { });
, я бы ожидал только unique_id файл с новыми журналами, вместо этого я нахожу все файлы обновленными (как если бы я вызывал flu sh в LogManager / LogFactory, а не указывал эту c цель).
Является ли эта конфигурация неправильной или это ошибка с target.Flu sh (AsyncContinuation)?