/// <summary> /// HttpEventCollectorTraceListener c-or. /// </summary> /// <param name="uri">Splunk server uri, for example https://localhost:8088.</param> /// <param name="token">HTTP event collector authorization token.</param> /// <param name="metadata">Logger metadata.</param> /// <param name="sendMode">Send mode of the events.</param> /// <param name="batchInterval">Batch interval in milliseconds.</param> /// <param name="batchSizeBytes">Batch max size.</param> /// <param name="batchSizeCount">MNax number of individual events in batch.</param> /// <param name="middleware"> /// HTTP client middleware. This allows to plug an HttpClient handler that /// intercepts logging HTTP traffic. /// </param> public HttpEventCollectorTraceListener( Uri uri, string token, HttpEventCollectorEventInfo.Metadata metadata = null, HttpEventCollectorSender.SendMode sendMode = HttpEventCollectorSender.SendMode.Sequential, int batchInterval = HttpEventCollectorSender.DefaultBatchInterval, int batchSizeBytes = HttpEventCollectorSender.DefaultBatchSize, int batchSizeCount = HttpEventCollectorSender.DefaultBatchCount, HttpEventCollectorSender.HttpEventCollectorMiddleware middleware = null, HttpEventCollectorSender.HttpEventCollectorFormatter formatter = null) { this.formatter = formatter; sender = new HttpEventCollectorSender( uri, token, metadata, sendMode, batchInterval, batchSizeBytes, batchSizeCount, middleware, formatter); }
private TraceSource TraceCustomFormatter( RequestHandler handler, HttpEventCollectorSender.HttpEventCollectorFormatter formatter, HttpEventCollectorSender.HttpEventCollectorMiddleware middleware) { var trace = new TraceSource("HttpEventCollectorLogger"); trace.Switch.Level = SourceLevels.All; trace.Listeners.Add( new HttpEventCollectorTraceListener( uri: uri, token: token, middleware: middleware, formatter: formatter, sendMode: HttpEventCollectorSender.SendMode.Parallel) ); return(trace); }
public void ActivateOptions(HttpEventCollectorSender.HttpEventCollectorFormatter formatter) { _hecSender = new HttpEventCollectorSender( new Uri(ServerUrl), // Splunk HEC URL Token, // Splunk HEC token *GUID* new HttpEventCollectorEventInfo.Metadata(null, null, SourceType, GetMachineName()), // Metadata HttpEventCollectorSender.SendMode.Sequential, // Sequential sending to keep message in order 0, // BatchInterval - Set to 0 to disable 0, // BatchSizeBytes - Set to 0 to disable 0, // BatchSizeCount - Set to 0 to disable new HttpEventCollectorResendMiddleware(RetriesOnError).Plugin, // Resend Middleware with retry formatter // Use a custom formatter before sending ); // throw error on send failure _hecSender.OnError += exception => { throw new Exception($"SplunkHttpEventCollector failed to send log event to Splunk server '{new Uri(ServerUrl).Authority}' using token '{Token}'. Exception: {exception}"); }; }