我如何可以关联SignalR写()和WriteLine()跟踪消息
我实现一个自定义的,服务器端TraceListener
重定向SignalR痕迹,我的日志服务。在测试时,我通过web.config实现了默认的TextWriterTraceListener
,使用方向从SignalR help page。使用traceOutputOptions="Datetime, ThreadId, ProcessId"
,我得到一个跟踪,如:我如何可以关联SignalR写()和WriteLine()跟踪消息
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(504a810d-4597-4dd7-9a93-eb49e76519d3)
ProcessId=18508
ThreadId=11
DateTime=2016-01-20T15:51:05.7327980Z
凡轨线的第一部分是像一个主题,并跟踪级别,跟踪下半年是实际的消息,traceOutputOptions
的正下方与上市缩进。我测试了几个连接的客户端,并且这些跟踪文件总是被写入正确分组的文件中。
我实现我的自定义TraceListener
使用博客here。我成功地拦截了痕迹,但问题是单一的,典型的消息从多个Write()
电话进来,以最终WriteLine()
电话。如果我只是将消息发送到我的日志,每个Write()
或WriteLine()
通话时,显示为完全独立的日志信息。只是从我的TraceListener
写入一个文本文件,我得到的输出如下:
SignalR.Transports.LongPollingTransport Verbose: 0 :
DrainWrites(be9bc850-1453-4c0a-b1e4-3c1ecb8b0359)
ProcessId=23604
ThreadId=7
DateTime=2016-01-20T17:04:51.3859180Z
我可以看到这些相关的唯一方法,是由线程Write()
和WriteLine()
被称为以跟踪他们,通过某种缓存,然后发送完整的消息的日志服务上WriteLine()
,但前提是WriteLine()
消息没有traceOutputOptions
的在它的名字之一,因为这些也通过WriteLine()
写入。
我不想出题跟踪级别是一个日志行,该消息是另一个。有没有其他方法可以确保将它们一起输出到日志记录服务?
解决的办法是覆盖所有的方法,而不是方法Write()
和WriteLine()
方法。这让我可以访问不止一个字符串。