1

我有一个 WCF 服务,其中我使用 Log4Net 将信息记录到 Sql Server 数据库。我使用 Log4Net 的 GlobalContext 来记录一些额外的信息,比如事务名称、状态、消息和其他一些东西。该系统中的一些重要事务是读取、写入和登录。

日志应如下所示:

  • “读取” -------- “成功” -------- “读取 xxx 客户数据”
  • “写入” -------- “成功” -------- “写入 xxx 客户的数据”
  • “登录”--------“失败”--------“用户会话已存在。”

当我运行正常测试时,一切正常 - 日志完美地写入数据库。但是,最近我使用 JMeter 进行了负载测试。上面提到的三个事务在 100 个并发线程中测试了 3 分钟。当我检查数据库日志时,我发现有些信息被错误地记录了。

前任:

  • “读取”--------“成功”--------“用户会话已存在。”
  • “写入” -------- “成功” -------- “读取 xxx 客户数据”

这是 Log4Net GlobalContext 不是线程安全的问题吗?我尝试使用 ThreadContext 而不是 GlobalContext,但看起来很多信息没有被记录。

4

1 回答 1

0

LogicalThreadContext 为我做了诀窍!

于 2012-07-03T04:51:47.933 回答