C# NLog选择性刷新异步目标包装器
我创建了大量异步目标包装器,如下所示:C# NLog选择性刷新异步目标包装器,c#,asynchronous,logging,nlog,C#,Asynchronous,Logging,Nlog,我创建了大量异步目标包装器,如下所示: var fileTarget = new FileTarget("file_"+unique_id) { FileName = $"{unique_id}.log"), Layout = layout_string, DeleteOldFileOnStartup = fals
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();
每个目标都有一个单独的记录器分配给它。
然后,我通过指定的记录器将几行日志记录到每个创建的目标。
文件中尚未记录任何内容,因为它们是异步的,并且队列未满
现在,如果我这样做了
Target t = m_job_logger_factory.Configuration.FindTargetByName(unique_id);
t.Flush((e) => { });
我希望只有unique_id文件有新的日志,相反,我发现所有的文件都更新了(好像我在LogManager/LogFactory上调用了flush,而不是这个特定的目标)
此配置是否不正确,或者这是target.Flush(AsyncContinuation)的错误?NLog版本是什么,内部日志报告是什么(跟踪级别)。看见我检查了代码,目标的刷新只刷新该目标(和包装的目标),不管怎样,也许可以解释一下您试图对这些文件目标和单独的刷新执行什么操作。这听起来像个XY问题。我也不认为您需要多个文件目标。