ASP.NET中的log4net唯一请求ID

Lit*_*ait 24 asp.net log4net

log4net 1.2.11.0

我试图获得任何允许我使用每个ASP.NET请求的唯一值记录的内容.

我尝试了%thread,但线程似乎被重用了.

我已经尝试了%aspnet-request和%aspnet-session,它们中没有任何有意义的东西.

我查看了ThreadContext.Properties和LogicalThreadContext.Properties,但它们中也没有任何内容.

任何人都有诀窍来完成这项工作?我需要能够从日志文件中选择特定请求的日志.

Kna*_*ģis 22

.asmx文件仍将调用Application_BeginRequest您可以存储唯一GUID的事件HttpContext.Current.Items(使用此集合避免在请求处理跳转线程时出现奇怪的问题).只有当你使用WCF(然后它依赖于配置)时,这才行不通.

如果您不想触摸应用程序本身,可以使用HttpContext.Current.Timestamp它返回请求处理开始的时间.加上您现有的获取线程ID的方法,您将获得一个独特的价值.


And*_*rei 9

HttpContext.Current.Items - 是个好主意.

尝试添加类似的东西:

HttpContext.Current.Items.Add("RequestIdentity", Guid.NewGuid().ToString())
Run Code Online (Sandbox Code Playgroud)


Mar*_*her 5

clock tick我认为(假设每个线程一次处理1个请求),当你的请求开始时存储的+ process ID+ thread ID就足够了.