NLog 何时捕获线程 ID



如果我在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没有该属性,因此不能延迟到异步转换之后。

最新更新