【发布时间】:2015-08-14 17:19:05
【问题描述】:
我有一个托管在 IIS 8 应用程序池上的 Web 服务。我正在使用 log4net 进行日志记录。
我正在检查日志文件中的一些条目,并注意到线程 ID 发生了变化。
这是两个日志条目
<event logger="ManageStaticData"
timestamp="2015-08-14T03:00:00.0597938-06:00"
level="INFO"
thread="5916"
domain="Webservice"
username="IIS APPPOOL\WebServices">
<message>Start of static data load.</message>
<global-properties>
<data name="log4net:HostName" value="CC" />
</global-properties>
</event>
<event logger="ManageStaticData"
timestamp="2015-08-14T03:00:00.3410242-06:00"
level="DEBUG"
thread="eba102cb-8224-426e-a2b1-f4e984d4dea7"
domain="Webservice"
username="IIS APPPOOL\WebServices">
<message>Found 1 schedule to be load</message>
<global-properties>
<data name="log4net:HostName" value="CC" />
</global-properties>
</event>
显示这两条日志信息的代码路径只能来自同一个方法。
请注意线程值从“5916”更改为 GUID。
大约 6 秒后,我注意到 5916 线程开始记录其他 Web 服务调用。具有 GUID 的线程不再记录。
为什么线程值会改变? log4net 是否使用工作线程来记录条目?或者 IIS 是否以某种方式在进程中间切换了工作线程,听起来不太可能?或者它是同一个线程,但被重命名了?
【问题讨论】: