Jason Evans
Jason Evans

Reputation: 29186

Capture SignalR logging to file

I'm using SignalR 1.2.

I have enabled client-side SignalR logging, plus EnableDetailedErrors is set to true when calling MapHubs() which results in very useful information being emitted to the Chrome dev tools console window for me.

Is there a means of capturing this information to disk somehow i.e. is there a SignalR config available to enable this? Reason I ask is that, when a disconnect event occurs, such as the user closing the browser, I'd like to capture that somehow. Saving the console output manually to Notepad (via copy and paste) is not ideal, since I would loose any disconnect event detail as the dev tool window will close once the browser is also closed.

Can this logging information be capture to disk for me?

Upvotes: 0

Views: 5337

Answers (1)

halter73
halter73

Reputation: 15234

You can have SignalR write its server-side traces to files specified in Web.config:

  <system.diagnostics>
    <sharedListeners>
      <add name="traces" type="System.Diagnostics.TextWriterTraceListener" initializeData="server_traces.txt" />
    </sharedListeners>
    <trace autoflush="true" />
    <switches>
      <add name="SignalRSwitch" value="All" />
    </switches>
    <sources>
      <source name="SignalR.Connection">
        <listeners>
          <add name="traces" />
        </listeners>        
      </source>
      <source name="SignalR.PersistentConnection">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.ReflectedHubDescriptorProvider">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.HubDispatcher">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.MessageBus">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.Transports.WebSocketTransport">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.Transports.ServerSentEventsTransport">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.Transports.ForeverFrameTransport">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.Transports.LongPollingTransport">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
      <source name="SignalR.Transports.TransportHeartBeat">
        <listeners>
          <add name="traces" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

https://github.com/SignalR/SignalR/wiki/Tracing-on-the-server-side


If you are using a scaleout provider, you can also add sources for "SignalR.ScaleoutMessageBus", "SignalR.SqlMessageBus", "SignalR.ServiceBusMessageBus", and/or "SignalR.RedisMessageBus".

http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-in-signalr

Upvotes: 2

Related Questions