如果我在nlog.config中打开了异步日志记录,ThreadID
在哪里捕获?
上下文:我正在使用.NET,Rx和TPL Dataflow(又名TDP)启动一个绿地项目。 它将大量使用异步操作和后台工作队列。
目标:在我的日志记录中,我想捕获正在执行工作以及并行完成工作的时间ManagedThreadId
(在 Rx 中很容易出错,默认调度程序不是 ThreadPool)。 如果我在 nlog.config 中打开了异步日志记录,线程 ID 在哪里捕获?
关注:我在 NLog 的核心LogEntry
类中看不到 ThreadID。 例如,它不会发送到cbley/NLog.SignalR中的浏览器。 如果我在 nlog.config 中打开了异步日志记录,ThreadID
在哪里捕获? 如果在呈现日志条目之前没有捕获它(在 NLog 后台线程中),那么ThreadId
对我来说毫无用处,我需要找到一个更合适的日志记录库。
NLog 会正确捕获线程。
NLog 在 LayoutRender
派生类上使用[ThreadAgnostic]
,这些类可以在调用线程外部使用/呈现。 由于ThreadIdLayoutRender
没有该属性,因此不能延迟到异步转换之后。