// Gets the name of the closest "parent" TraceRoute that has listeners, or null otherwise. private static TraceSource GetTraceSourceWithListeners(string name, SourceLevels sourceLevels) { string[] parts = name.Split(new char[] { '.' }, StringSplitOptions.None); List <string> namesToTest = new List <string>(); StringBuilder sb = new StringBuilder(); foreach (var part in parts) { if (sb.Length > 0) { sb.Append("."); } sb.Append(part); string partialName = sb.ToString(); namesToTest.Add(partialName); } namesToTest.Reverse(); foreach (var testName in namesToTest) { TraceSource ts = new TraceSource(testName); //bug in unity .NET 35 subset version. //constructor defaults the source level to always off. ts.Switch.Level = sourceLevels; ts.Listeners.AddRange(AWSConfigs.TraceListeners(testName)); // no listeners? skip if (ts.Listeners == null || ts.Listeners.Count == 0) { ts.Close(); continue; } // more than one listener? use this TraceSource if (ts.Listeners.Count > 1) { return(ts); } TraceListener listener = ts.Listeners[0]; // single listener isn't DefaultTraceListener? use this TraceRoute if (!(listener is DefaultTraceListener)) { return(ts); } // single listener is DefaultTraceListener but isn't named Default? use this TraceRoute if (!string.Equals(listener.Name, "Default", StringComparison.Ordinal)) { return(ts); } // not the TraceSource we're looking for, close it ts.Close(); } // nothing found? no listeners are configured for any of the names, even the original, // so return null to signify failure return(null); }
static void TraceSourceDemo1() { trace.TraceInformation("Info message"); trace.TraceEvent(TraceEventType.Error, 3, "Error message"); trace.TraceData(TraceEventType.Information, 2, "data1", 4, 5); trace.Flush(); trace.Close(); }
public static void StartTraces() { try { mySource.TraceMessage(TraceEventType.Information, 57, "Arrancando el servicio de gestión documental"); mySource?.Close(); } catch { } }
/// <summary> /// Gets the closest "parent" TraceRoute that has listeners, or null otherwise /// </summary> /// <param name="name"></param> /// <param name="sourceLevels"></param> /// <returns></returns> private static TraceSource GetTraceSourceWithListenersSyncLock(string name, SourceLevels sourceLevels) { string[] splitters = name.Split(new char[] { '.' }, StringSplitOptions.None); List <string> nameSplitList = new List <string>(); StringBuilder builder = new StringBuilder(); foreach (string split in splitters) { if (builder.Length > 0) { builder.Append("."); } builder.Append(split); string partialName = builder.ToString(); nameSplitList.Add(partialName); } nameSplitList.Reverse(); foreach (string nameSplit in nameSplitList) { TraceSource sourceTrace = null; sourceTrace = new TraceSource(nameSplit, sourceLevels); if (sourceTrace.Listeners == null || sourceTrace.Listeners.Count == 0) { sourceTrace.Close(); continue; } if (sourceTrace.Listeners.Count > 1) { return(sourceTrace); } TraceListener listenerTrace = sourceTrace.Listeners[0]; if (!(listenerTrace is DefaultTraceListener)) { return(sourceTrace); } if (!string.Equals(listenerTrace.Name, "Default", StringComparison.Ordinal)) { return(sourceTrace); } sourceTrace.Close(); } return(null); }
public static void StartTraces(string idName) { try { if (mySource == null) { mySource = new TraceSource(idName); } TraceMessage(TraceEventType.Information, 57, "Arrancando app cliente de mus"); mySource?.Close(); } catch { } }
public void TraceEventMessageFormat() { var cut = new ObjectFileTraceListener { Name = "object", Filename = $"Trace-{GetMethodName()}.txt", TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ProcessId | TraceOptions.ThreadId, }; var source = new TraceSource(nameof(ObjectFileTraceListenerTests), SourceLevels.All) { Listeners = { cut } }; const int id = 42; const TraceEventType eventType = TraceEventType.Verbose; const string format = "some information is {0}"; const int number = 859874; source.TraceEvent(eventType, id, format, number); source.Close(); var expectedLines = GetPatterns(GetMethodName()); var actualLines = GetLines(cut); AssertLines(expectedLines, actualLines); }
private static void TraceEvent(TraceEventType type, string message) { if (TraceFilePath != null) { var level = new SourceSwitch(SourceName) { Level = Level }; var trace = new TraceSource(SourceName) { Switch = level }; trace.Listeners.Clear(); using (var file = new TextWriterTraceListener(TraceFilePath)) { trace.Listeners.Add(file); trace.TraceEvent(type, 0, $"{DateTime.Now:HH:mm:ss.fff} {message}"); file.Flush(); } trace.Close(); } }
static void Close() { if (IntelliSenseTraceSource != null) { IntelliSenseTraceSource.Close(); } }
static void Main(string[] args) { // Issue an error and a warning message. Only the error message // should be logged. Activity1(); // Save the original settings from the configuration file. EventTypeFilter configFilter = (EventTypeFilter)mySource.Listeners["console"].Filter; // Create a new event type filter that ensures // warning messages will be written. mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Warning); // Allow the trace source to send messages to listeners // for all event types. This statement will override // any settings in the configuration file. // If you do not change the switch level, the event filter // changes have no effect. mySource.Switch.Level = SourceLevels.All; // Issue a warning and a critical message. Both should be logged. Activity2(); // Restore the original filter settings. mySource.Listeners["console"].Filter = configFilter; Activity3(); mySource.Close(); return; }
public bool CheckConnection() { try { UsersServices.Instance.CheckConnection(); var context = OperationContext.Current; var prop = context.IncomingMessageProperties; var endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; string ip = endpoint.Address; int port = endpoint.Port; WriteToLog("Successfully connected to Data Base"); WriteToLog("Ip Address: " + ip + " And Port: " + port.ToString()); WriteToLog("Date Time: " + DateTime.Now.ToString()); mySource.TraceEvent(TraceEventType.Information, 1, "Error message."); // EventTypeFilter configFilter =(EventTypeFilter)mySource.Listeners["console"].Filter; // mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Warning); // mySource.Switch.Level = SourceLevels.All; mySource.Close(); return(true); } catch (Exception ex) { return(false); //throw new Exception(ex.Message); } }
public async Task TestTcpTraceListener() { var listener = new TcpListener(IPAddress.Loopback, 0); listener.Start(); int port = ((IPEndPoint)listener.Server.LocalEndPoint).Port; var traceSource = new TraceSource("UnitTestLogger"); traceSource.Listeners.Remove("Default"); traceSource.Switch.Level = SourceLevels.All; traceSource.Listeners.Add(new TcpTraceListener( IPAddress.Loopback, port, new ExponentialBackoffTcpReconnectionPolicy())); var listenerClient = await listener.AcceptTcpClientAsync(); traceSource.TraceEvent(TraceEventType.Information, 100, "Boris"); var receiverReader = new StreamReader(listenerClient.GetStream()); var line = await receiverReader.ReadLineAsync(); Assert.True(line.EndsWith("UnitTestLogger Information: 100 : Boris")); listenerClient.Close(); listener.Stop(); traceSource.Close(); }
public void Refresh_RemoveSource() { // Use a SourceSwitch that logs Error. CreateAndLoadConfigFile("testhost_RemoveSource_before.config"); TraceSource mySourceToBeRemoved = new TraceSource("Refresh_RemoveSource", SourceLevels.Warning); Assert.Equal(SourceLevels.Warning, mySourceToBeRemoved.DefaultLevel); Assert.Equal(SourceLevels.Error, mySourceToBeRemoved.Switch.Level); // Config has Error. Assert.Equal("Error", mySourceToBeRemoved.Switch.Value); StringTraceListener listenerToBeRemoved = (StringTraceListener)mySourceToBeRemoved.Listeners["listener"]; listenerToBeRemoved.Clear(); mySourceToBeRemoved.TraceEvent(TraceEventType.Error, 1, "Error message."); Assert.Equal($"Refresh_RemoveSource Error: 1 : Error message.{Environment.NewLine}", listenerToBeRemoved.Output); // Change the switch to log All. listenerToBeRemoved.Clear(); CreateAndLoadConfigFile("testhost_RemoveSource_after.config"); Trace.Refresh(); Assert.Equal(SourceLevels.Warning, mySourceToBeRemoved.DefaultLevel); Assert.Equal(SourceLevels.Warning, mySourceToBeRemoved.Switch.Level); // Changed to Warning since the switch was removed from the config. Assert.Equal("Error", mySourceToBeRemoved.Switch.Value); mySourceToBeRemoved.TraceEvent(TraceEventType.Error, 1, "Error message."); Assert.Equal(string.Empty, listenerToBeRemoved.Output); listenerToBeRemoved.Clear(); mySourceToBeRemoved.Close(); }
public static void RunDebugAndTrace() { TraceListener consoleListener = new ConsoleTraceListener(); Trace.Listeners.Add(consoleListener); Trace.TraceInformation("info message"); Trace.Indent(); Trace.TraceWarning("Warning message"); Trace.Unindent(); Trace.TraceError("error message"); //trace source will create events that can be used to trace program execution TraceSource trace = new TraceSource("Tracer", SourceLevels.All); //500 is a value that represents certain events (used only as developer reference 500 could be UI, 600 databases and so on) trace.TraceEvent(TraceEventType.Start, 500); trace.TraceEvent(TraceEventType.Warning, 501); trace.TraceEvent(TraceEventType.Verbose, 502, "at the end of the program"); //Trace data method allos information to be added to an event in the form of a collection of object references trace.TraceData(TraceEventType.Information, 503, new object[] { "note 1", "Message 007" }); trace.Flush(); trace.Close(); Console.ReadLine(); }
public void TraceDataSingle() { var cut = new ObjectFileTraceListener { Name = "object", Filename = $"Trace-{GetMethodName()}.txt", TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ProcessId | TraceOptions.ThreadId, }; var source = new TraceSource(nameof(ObjectFileTraceListenerTests), SourceLevels.All) { Listeners = { cut } }; const int id = 42; const TraceEventType eventType = TraceEventType.Verbose; const string message = "some message"; const int number = 787; var data = new Data { Text = message, Id = number }; source.TraceData(eventType, id, data); source.Close(); var expectedLines = GetPatterns(GetMethodName()); var actualLines = GetLines(cut); AssertLines(expectedLines, actualLines); }
static void Main(string[] args) { string fileName = "TraceOutput.xml"; string event_name = "eventschema_listener"; File.Delete(fileName); //specify the EventSchema trace listener using (var eventschema_listener = new EventSchemaTraceListener(fileName, event_name)) { TraceSource ts = new TraceSource("TestSource"); #if NOCONFIGFILE //ts.Listeners.Add(new EventSchemaTraceListener(fileName, event_name, 65536, TraceLogRetentionOption.LimitedCircularFiles, 20480000, 2)); ts.Listeners.Add(eventschema_listener); ts.Listeners[event_name].TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ProcessId | TraceOptions.Timestamp; #endif ts.Switch.Level = SourceLevels.All; string testString = "<Test><InnerElement Val=\"1\" /><InnerElement Val=\"Data\"/><AnotherElement>11</AnotherElement></Test>"; UnescapedXmlDiagnosticData unXData = new UnescapedXmlDiagnosticData(testString); ts.TraceData(TraceEventType.Error, 38, unXData); ts.TraceEvent(TraceEventType.Error, 38, testString); Trace.Listeners.Add(eventschema_listener); Trace.Write("test eventschema", "test"); Trace.Flush(); ts.Flush(); ts.Close(); DisplayProperties(ts, event_name); Process.Start("notepad++.exe", "TraceOutput.xml"); Console.ReadLine(); } }
public void TraceInformation() { var cut = new ObjectFileTraceListener { Name = "object", Filename = $"Trace-{GetMethodName()}.txt", TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ProcessId | TraceOptions.ThreadId, }; var source = new TraceSource(nameof(ObjectFileTraceListenerTests), SourceLevels.All) { Listeners = { cut } }; const string text = "some information"; source.TraceInformation(text); source.Close(); var expectedLines = GetPatterns(GetMethodName()); var actualLines = GetLines(cut); AssertLines(expectedLines, actualLines); }
/// Main program for Assimilation Project network discovery for Windows static void Main(string[] args) { mySource.Switch = new SourceSwitch("netconfig", "Error"); mySource.Listeners.Remove("Default"); EventLogTraceListener evl = new EventLogTraceListener("netconfig"); //Off, Critical, Error, Warning, Information, Verbose, ActivityTracing, All evl.Filter = new EventTypeFilter(SourceLevels.All); mySource.Listeners.Add(evl); Trace.WriteLine("start netconfig"); // build the json output string String jout = NetworkExplorer(); // add the final brace jout += "}"; // send to our stdout System.Console.WriteLine(jout); Trace.WriteLine("end netconfig"); mySource.Close(); }
private static void Close() { if (s_traceSource != null) { s_traceSource.Close(); } }
static void Main(string[] args) { traceSource.TraceInformation("Creating new person"); var person = new Person { FirstName = "John", LastName = "Doe" }; traceSource.TraceInformation("Creating new employee"); var employee = new Employee { Department = "IT", FirstName = person.FirstName, LastName = person.LastName, Manager = new Person { FirstName = "Jane", LastName = "Doe" } }; person.IsValid(); employee.IsDepartmentValid(); traceSource.Flush(); traceSource.Close(); }
private static void Close() { if (asmxTraceSource != null) { asmxTraceSource.Close(); } }
static void VerifyErrorsAreRaised() { string indexName = "errorindex"; string tokenName = "errortoken"; double testStartTime = SplunkCliWrapper.GetEpochTime(); SplunkCliWrapper splunk = new SplunkCliWrapper(); string token = CreateIndexAndToken(splunk, tokenName, indexName); var trace = new TraceSource("HttpEventCollectorLogger"); trace.Switch.Level = SourceLevels.All; var validMetaData = new HttpEventCollectorEventInfo.Metadata(index: indexName, source: "host", sourceType: "log", host: "customhostname"); var invalidMetaData = new HttpEventCollectorEventInfo.Metadata(index: "notexistingindex", source: "host", sourceType: "log", host: "customhostname"); var listenerWithWrongToken = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8088"), token: "notexistingtoken", metadata: validMetaData); var listenerWithWrongUri = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8087"), token: token, metadata: validMetaData); var listenerWithWrongMetadata = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8088"), token: token, metadata: invalidMetaData); bool wrongTokenWasRaised = false; listenerWithWrongToken.AddLoggingFailureHandler((HttpEventCollectorException e) => { wrongTokenWasRaised = true; }); bool wrongUriWasRaised = false; listenerWithWrongUri.AddLoggingFailureHandler((HttpEventCollectorException e) => { wrongUriWasRaised = true; }); bool wrongMetaDataWasRaised = false; listenerWithWrongMetadata.AddLoggingFailureHandler((HttpEventCollectorException e) => { wrongMetaDataWasRaised = true; }); trace.Listeners.Add(listenerWithWrongToken); trace.Listeners.Add(listenerWithWrongUri); trace.Listeners.Add(listenerWithWrongMetadata); // Generate data int eventCounter = GenerateData(trace); Console.WriteLine("{0} events were created, waiting for errors to be raised.", eventCounter); Thread.Sleep(30 * 1000); trace.Close(); Assert.True(wrongTokenWasRaised); Assert.True(wrongUriWasRaised); Assert.True(wrongMetaDataWasRaised); }
public static void Dispose() { if (ts != null) { ts.Flush(); ts.Close(); StopTimer(); objStream.Close(); objStream.Dispose(); try { objTraceListener.Close(); objTraceListener.Dispose(); } catch { } if (File.Exists(logFileName)) { FileStream file = new FileStream(logFileName, FileMode.OpenOrCreate, FileAccess.Write); file.Close(); } } }
public int ReadCities(string filename) { traceSource.TraceInformation("Read Cities started"); traceSource.Flush(); try { using (TextReader reader = new StreamReader(filename)) { IEnumerable <string[]> citiesAsStrings = reader.GetSplittedLines('\t'); IEnumerable <City> c = citiesAsStrings.Select(city => new City(city[0].ToString(), city[1].ToString(), int.Parse(city[2]), double.Parse(city[3], CultureInfo.InvariantCulture), double.Parse(city[4], CultureInfo.InvariantCulture))).ToArray(); cities.AddRange(c); traceSource.TraceInformation("Read Cities ended"); traceSource.Flush(); traceSource.Close(); return(c.Count()); } } catch (FileNotFoundException e) { traceSourceErrors.TraceData(TraceEventType.Critical, 1, e.StackTrace); traceSource.Flush(); } return(-1); }
public async Task TestTcpTraceListener() { var listener = new TcpListener(IPAddress.Loopback, 0); listener.Start(); int port = ((IPEndPoint)listener.Server.LocalEndPoint).Port; var traceSource = new TraceSource("UnitTestLogger"); traceSource.Listeners.Remove("Default"); traceSource.Switch.Level = SourceLevels.All; traceSource.Listeners.Add(new TcpTraceListener( IPAddress.Loopback, port, new ExponentialBackoffTcpReconnectionPolicy())); var listenerClient = await listener.AcceptTcpClientAsync(); traceSource.TraceEvent(TraceEventType.Information, 100, "Boris"); var receiverReader = new StreamReader(listenerClient.GetStream()); var line = await receiverReader.ReadLineAsync(); Assert.True(line.EndsWith("UnitTestLogger Information: 100 : Boris")); listenerClient.Close(); listener.Stop(); traceSource.Close(); }
public async Task TestUdpTraceListener() { int port = 11000; var udpclient = new UdpClient(port); var traceSource = new TraceSource("UnitTestLogger"); traceSource.Listeners.Remove("Default"); traceSource.Switch.Level = SourceLevels.All; traceSource.Listeners.Add(new UdpTraceListener(IPAddress.Loopback, port)); traceSource.TraceEvent(TraceEventType.Information, 100, "Boris"); var dgram = await udpclient.ReceiveAsync(); var receivedText = Encoding.UTF8.GetString(dgram.Buffer); Assert.Equal("UnitTestLogger Information: 100 : ", receivedText); dgram = await udpclient.ReceiveAsync(); receivedText = Encoding.UTF8.GetString(dgram.Buffer); Assert.Equal("Boris\r\n", receivedText); udpclient.Close(); traceSource.Close(); }
static void Main() { File.Delete("NotEscaped.xml"); TraceSource ts = new TraceSource("TestSource"); ts.Listeners.Add(new XmlWriterTraceListener("NotEscaped.xml")); ts.Switch.Level = SourceLevels.All; string testString = "<Test><InnerElement Val=\"1\" /><InnerElement Val=\"Data\"/><AnotherElement>11</AnotherElement></Test>"; XmlTextReader myXml = new XmlTextReader(new StringReader(testString)); XPathDocument xDoc = new XPathDocument(myXml); XPathNavigator myNav = xDoc.CreateNavigator(); ts.TraceData(TraceEventType.Error, 38, myNav); ts.Flush(); ts.Close(); File.Delete("Escaped.xml"); TraceSource ts2 = new TraceSource("TestSource2"); ts2.Listeners.Add(new XmlWriterTraceListener("Escaped.xml")); ts2.Switch.Level = SourceLevels.All; ts2.TraceData(TraceEventType.Error, 38, testString); ts2.Flush(); ts2.Close(); }
static void Main(string[] args) { //Add listener by code. See App.config for configuration in XML. //Debug.Listeners.Add(new TextWriterTraceListener(Console.Out)); //Debug.AutoFlush = true; //To add listeners for default tracing methods, config "listeners" //element under "trace" element in App.config. Trace.WriteLine("Call Trace.WriteLine"); Console.WriteLine("I'm main!"); Trace.TraceInformation("Call Trace.TraceInformation"); Trace.TraceError("Call Trace.TraceError"); //Trace with TraceSource in code. "MyTraceSource" is configed in //App.config. TraceSource ts = new TraceSource("MyTraceSource"); ts.TraceEvent(TraceEventType.Information, 123, "My trace event."); ts.TraceEvent(TraceEventType.Error, 123, "My trace error event."); ts.Flush(); ts.Close(); //MyTrace uses the same "MyTraceSource" as above code. Attention: //there has to be <trace autoflush="true" ...> in App.config to //see the output from MyTrace.TraceInfo/Error, though it uses the //same "MyTraceSource" like the above code. MyTrace.TraceInfo("MyTrace works!"); MyTrace.TraceError("MyTrace(error) works!"); }
static void Main() { File.Delete("TraceOutput.xml"); TraceSource ts = new TraceSource("TestSource"); #if NOCONFIGFILE //ts.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml", "eventListener", 65536, TraceLogRetentionOption.LimitedCircularFiles, 20480000, 2)); ts.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml", "eventListener")); ts.Listeners["eventListener"].TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ProcessId | TraceOptions.Timestamp; #endif ts.Switch.Level = SourceLevels.All; string testString = "<Test><InnerElement Val=\"1\" /><InnerElement Val=\"Data\"/><AnotherElement>11</AnotherElement></Test>"; UnescapedXmlDiagnosticData unXData = new UnescapedXmlDiagnosticData(testString); ts.TraceData(TraceEventType.Error, 38, unXData); ts.TraceEvent(TraceEventType.Error, 38, testString); Trace.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml")); Trace.Write("test", "test"); Trace.Flush(); ts.Flush(); ts.Close(); DisplayProperties(ts); Process.Start("notepad.exe", "TraceOutput.xml"); Console.WriteLine("Press the enter key to exit"); Console.ReadLine(); }
public static void Close() { if (logSource != null) { logSource.Close(); } }
static void Main(string[] args) { mySource.Switch = new SourceSwitch("sourceSwitch", "Error"); mySource.Listeners.Remove("Default"); TextWriterTraceListener textListener = new TextWriterTraceListener("myListener.log"); textListener.TraceOutputOptions = TraceOptions.DateTime | TraceOptions.Callstack; textListener.Filter = new EventTypeFilter(SourceLevels.Error); mySource.Listeners.Add(textListener); ConsoleTraceListener consoleListener = new ConsoleTraceListener(false); consoleListener.Filter = new EventTypeFilter(SourceLevels.Information); consoleListener.Name = "console"; mySource.Listeners.Add(consoleListener); Activity1(); mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Critical); Activity2(); mySource.Switch.Level = SourceLevels.All; mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Information); Activity3(); mySource.Close(); Console.Read(); }
static void Close() { if (IntegrationTraceSource != null) { IntegrationTraceSource.Close(); } }
public void CloseTest() { var trace = new TraceSource("T1", SourceLevels.All); trace.Listeners.Clear(); var listener = new TestTraceListener(); trace.Listeners.Add(listener); trace.Close(); // NOTE: this assertion fails on .net 4.5 // where TraceSource.Close calls TraceListener.Close, not Dispose. Assert.Equal(1, listener.GetCallCount(Method.Dispose)); // Assert that writing to a closed TraceSource is not an error. trace.TraceEvent(TraceEventType.Critical, 0); }
public static void SendEventsBatchedByTime() { string tokenName = "batchedbytimetoken"; string indexName = "batchedbytimeindex"; SplunkCliWrapper splunk = new SplunkCliWrapper(); double testStartTime = SplunkCliWrapper.GetEpochTime(); string token = CreateIndexAndToken(splunk, tokenName, indexName); var trace = new TraceSource("HttpEventCollectorLogger"); trace.Switch.Level = SourceLevels.All; var meta = new HttpEventCollectorEventInfo.Metadata(index: indexName, source: "host", sourceType: "log", host: "customhostname"); var listener = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8088"), token: token, metadata: meta, batchInterval: 1000); trace.Listeners.Add(listener); GenerateDataWaitForIndexingCompletion(splunk, indexName, testStartTime, trace); trace.Close(); }
static void VerifyErrorsAreRaised() { string indexName = "errorindex"; string tokenName = "errortoken"; double testStartTime = SplunkCliWrapper.GetEpochTime(); SplunkCliWrapper splunk = new SplunkCliWrapper(); string token = CreateIndexAndToken(splunk, tokenName, indexName); var trace = new TraceSource("HttpEventCollectorLogger"); trace.Switch.Level = SourceLevels.All; var validMetaData = new HttpEventCollectorEventInfo.Metadata(index: indexName, source: "host", sourceType: "log", host: "customhostname"); var invalidMetaData = new HttpEventCollectorEventInfo.Metadata(index: "notexistingindex", source: "host", sourceType: "log", host: "customhostname"); var listenerWithWrongToken = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8088"), token: "notexistingtoken", metadata: validMetaData); var listenerWithWrongUri = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8087"), token: token, metadata: validMetaData); var listenerWithWrongMetadata = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8088"), token: token, metadata: invalidMetaData); bool wrongTokenWasRaised = false; listenerWithWrongToken.AddLoggingFailureHandler((HttpEventCollectorException e) => { wrongTokenWasRaised = true; }); bool wrongUriWasRaised = false; listenerWithWrongUri.AddLoggingFailureHandler((HttpEventCollectorException e) => { wrongUriWasRaised = true; }); bool wrongMetaDataWasRaised = false; listenerWithWrongMetadata.AddLoggingFailureHandler((HttpEventCollectorException e) => { wrongMetaDataWasRaised = true; }); trace.Listeners.Add(listenerWithWrongToken); trace.Listeners.Add(listenerWithWrongUri); trace.Listeners.Add(listenerWithWrongMetadata); // Generate data int eventCounter = GenerateData(trace); Console.WriteLine("{0} events were created, waiting for errors to be raised.", eventCounter); Thread.Sleep(30 * 1000); trace.Close(); Assert.True(wrongTokenWasRaised); Assert.True(wrongUriWasRaised); Assert.True(wrongMetaDataWasRaised); }
public void VerifyFlushEvents() { string tokenName = "flusheventtoken"; string indexName = "flusheventdindex"; SplunkCliWrapper splunk = new SplunkCliWrapper(); double testStartTime = SplunkCliWrapper.GetEpochTime(); string token = CreateIndexAndToken(splunk, tokenName, indexName); splunk.StopServer(); Thread.Sleep(5 * 1000); var trace = new TraceSource("HttpEventCollectorLogger"); trace.Switch.Level = SourceLevels.All; var meta = new HttpEventCollectorEventInfo.Metadata(index: indexName, source: "host", sourceType: "log", host: "customhostname"); var listener = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8088"), token: token, retriesOnError: int.MaxValue, metadata: meta); trace.Listeners.Add(listener); // Generate data, wait a little bit so retries are happenning and start Splunk. Expecting to see all data make it const int eventsToGeneratePerLoop = 250; const int expectedCount = eventsToGeneratePerLoop * 7; int eventCounter = GenerateData(trace, eventsPerLoop: eventsToGeneratePerLoop); splunk.StartServer(); trace.Close(); // Verify every event made to Splunk splunk.WaitForIndexingToComplete(indexName, stabilityPeriod: 30); int eventsFound = splunk.GetSearchCount("index=" + indexName); Assert.Equal(expectedCount, eventsFound); }
static void VerifyEventsAreInOrder() { string tokenName = "verifyeventsareinordertoken"; string indexName = "verifyeventsareinorderindex"; SplunkCliWrapper splunk = new SplunkCliWrapper(); double testStartTime = SplunkCliWrapper.GetEpochTime(); string token = CreateIndexAndToken(splunk, tokenName, indexName); var trace = new TraceSource("HttpEventCollectorLogger"); trace.Switch.Level = SourceLevels.All; var meta = new HttpEventCollectorEventInfo.Metadata(index: indexName, source: "host", sourceType: "log", host: "customhostname"); var listener = new HttpEventCollectorTraceListener( uri: new Uri("https://127.0.0.1:8088"), token: token, metadata: meta); trace.Listeners.Add(listener); // Generate data int totalEvents = 1000; string[] filer = new string[2]; filer[0] = new string('s', 1); filer[1] = new string('l', 100000); for (int i = 0; i < totalEvents; i++) { trace.TraceInformation(string.Format("TraceInformation. This is event {0}. {1}", i, filer[i%2])); } string searchQuery = "index=" + indexName; Console.WriteLine("{0} events were created, waiting for indexing to complete.", totalEvents); splunk.WaitForIndexingToComplete(indexName); int eventsFound = splunk.GetSearchCount(searchQuery); Console.WriteLine("Indexing completed, {0} events were found. Elapsed time {1:F2} seconds", eventsFound, SplunkCliWrapper.GetEpochTime() - testStartTime); // Verify all events were indexed correctly and in order Assert.Equal(totalEvents, eventsFound); List<string> searchResults = splunk.GetSearchResults(searchQuery); Assert.Equal(searchResults.Count, eventsFound); for (int i = 0; i< totalEvents; i++) { int id = totalEvents - i - 1; string expected = string.Format("TraceInformation. This is event {0}. {1}", id, filer[id % 2]); Assert.True(searchResults[i].Contains(expected)); } trace.Close(); }
public async Task TestUdpTraceListener() { int port = 11000; var udpclient = new UdpClient(port); var traceSource = new TraceSource("UnitTestLogger"); traceSource.Listeners.Remove("Default"); traceSource.Switch.Level = SourceLevels.All; traceSource.Listeners.Add(new UdpTraceListener(IPAddress.Loopback, port)); traceSource.TraceEvent(TraceEventType.Information, 100, "Boris"); var dgram = await udpclient.ReceiveAsync(); var receivedText = Encoding.UTF8.GetString(dgram.Buffer); Assert.Equal("UnitTestLogger Information: 100 : ", receivedText); dgram = await udpclient.ReceiveAsync(); receivedText = Encoding.UTF8.GetString(dgram.Buffer); Assert.Equal("Boris\r\n", receivedText); udpclient.Close(); traceSource.Close(); }