小编Mit*_*tli的帖子

使用nlog记录多个线程

我在我的项目中使用nlog logger.

我的程序根据从sql server获取的数据生成xml文件.我正在用PLINQ做这个.但我也必须记录跟踪信息,以便能够对prod环境中的特殊情况进行一些调查.

当来自多个线程时,结果日志看起来很糟糕.例如:

Operation 1 starded
Deserializing XXX
Operation 2 started
Deserializing XXX finished with status X
Filling XXX with data from Z
Deserializing YYY....
Run Code Online (Sandbox Code Playgroud)

它只是为了并行度2.

我想看到这样的结果:

Operation 1 starded
Deserializing XXX
Deserializing XXX finished with status X
Filling XXX with data from Z
Operation 1 finished
Operation 2 started    
Deserializing YYY....
Run Code Online (Sandbox Code Playgroud)

我看到了一些解决方案,但它们看起来不够好:

  1. 将记录数据保存到某个缓冲区并在parralel任务结束时将其刷新 - 我将应该将上下文传递给所有内部方法(看起来很糟糕!).
  2. 添加某种预添加到日志消息以帮助获取某些消息的上下文 - 我必须将预加密传递给每个内部消息(也看起来很糟糕).

这个问题有一些干净的解决方案吗?

c# logging multithreading nlog

2
推荐指数
1
解决办法
9213
查看次数

选择什么ArgumentNullException或NullReferenceException

我正在编写一个方法扩展的小库.

例如,我们有扩展方法

public static T GetRandom<T>(this IEnumerable<T> collection)
Run Code Online (Sandbox Code Playgroud)

当集合为空时,哪种异常ArgumentNullExceptionNullReferenceException最明显?或者是其他东西?

.net c#

0
推荐指数
1
解决办法
82
查看次数

标签 统计

c# ×2

.net ×1

logging ×1

multithreading ×1

nlog ×1