我如何可以关联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()方法。这让我可以访问不止一个字符串。