|
| 1 | +// See https://aka.ms/new-console-template for more information |
| 2 | + |
| 3 | +using Elastic.CommonSchema; |
| 4 | +using Elastic.Transport; |
| 5 | +using Microsoft.Extensions.Logging; |
| 6 | +using Log = Elastic.CommonSchema.Log; |
| 7 | +using LogLevel = NLog.LogLevel; |
| 8 | + |
| 9 | +Console.WriteLine("Hello, World!"); |
| 10 | + |
| 11 | +var serialized = @$"{{}}"; |
| 12 | +var deserialized = EcsDocument.Deserialize(serialized); |
| 13 | +if (deserialized == null) throw new Exception("deserialized is null"); |
| 14 | + |
| 15 | +serialized = @$"{{ ""agent"": {{ ""unknown"": ""value"" }} }}"; |
| 16 | +deserialized = EcsDocument.Deserialize(serialized); |
| 17 | +if (deserialized == null) throw new Exception("deserialized is null"); |
| 18 | +if (deserialized.Agent == null) throw new Exception("deserialized agent is null"); |
| 19 | + |
| 20 | +var d = new EcsDocument { Agent = new Agent { Name = "some-agent" }, Log = new Log { Level = "debug" } }; |
| 21 | + |
| 22 | +serialized = d.Serialize(); |
| 23 | +if (string.IsNullOrEmpty(serialized)) throw new Exception("serialized is null"); |
| 24 | +Console.WriteLine(serialized); |
| 25 | + |
| 26 | +var invoker = new InMemoryRequestInvoker(); |
| 27 | +var pool = new StaticNodePool([new Node(new Uri("http://localhost:9200"))]); |
| 28 | +var configuration = new TransportConfiguration(pool, invoker); |
| 29 | +var transport = new DistributedTransport(configuration); |
| 30 | + |
| 31 | +var extension = new ExtensionsLogger(transport); |
| 32 | +LogInMemoryExtensionsLogger(extension); |
| 33 | + |
| 34 | +var nlog = new NLogExporter(transport); |
| 35 | +LogInMemoryNLog(nlog); |
| 36 | + |
| 37 | +/* |
| 38 | +var serilog = new SerilogExporter(transport); |
| 39 | +LogInMemorySerilog(serilog); |
| 40 | +
|
| 41 | +void LogInMemorySerilog(SerilogExporter serilogExporter) |
| 42 | +{ |
| 43 | + using var logger = serilogExporter.CreateSerilogLogger(out var waitHandle, out var listener); |
| 44 | + logger.Information("an error occurred {Status}", "failure"); |
| 45 | +
|
| 46 | + if (!waitHandle.WaitOne(TimeSpan.FromSeconds(10))) |
| 47 | + throw new Exception($"No flush occurred in 10 seconds: {listener}", listener.ObservedException); |
| 48 | +
|
| 49 | + if (!listener.PublishSuccess) |
| 50 | + throw new Exception("Serilog Logger did not export correctly"); |
| 51 | + if (listener.ObservedException != null) |
| 52 | + throw new Exception("Serilog Logger received exception", listener.ObservedException); |
| 53 | + Console.WriteLine("Serilog Logger export success"); |
| 54 | +} |
| 55 | +*/ |
| 56 | + |
| 57 | +void LogInMemoryExtensionsLogger(ExtensionsLogger extensionsLogger) |
| 58 | +{ |
| 59 | + using var _ = extensionsLogger.CreateExtensionsLogger(out var logger, out var provider, out var @namespace, out var waitHandle, out var listener); |
| 60 | + logger.LogError("an error occurred {Status}", "failure"); |
| 61 | + |
| 62 | + if (!waitHandle.WaitOne(TimeSpan.FromSeconds(10))) |
| 63 | + throw new Exception($"No flush occurred in 10 seconds: {listener}", listener.ObservedException); |
| 64 | + |
| 65 | + if (!listener.PublishSuccess) |
| 66 | + throw new Exception("Extensions Logger did not export correctly"); |
| 67 | + if (listener.ObservedException != null) |
| 68 | + throw new Exception("Extensions Logger received exception", listener.ObservedException); |
| 69 | + Console.WriteLine("Extensions Logger export success"); |
| 70 | +} |
| 71 | + |
| 72 | +void LogInMemoryNLog(NLogExporter serilogExporter) |
| 73 | +{ |
| 74 | + using var _ = serilogExporter.CreateNLogLogger(out var logger, out var _, out var _, out var waitHandle, out var listener); |
| 75 | + logger.Log(LogLevel.Error, "an error occurred {Status}", "failure"); |
| 76 | + |
| 77 | + if (!waitHandle.WaitOne(TimeSpan.FromSeconds(10))) |
| 78 | + throw new Exception($"No flush occurred in 10 seconds: {listener}", listener.ObservedException); |
| 79 | + |
| 80 | + if (!listener.PublishSuccess) |
| 81 | + throw new Exception("NLog did not export correctly"); |
| 82 | + if (listener.ObservedException != null) |
| 83 | + throw new Exception("NLog export received exception", listener.ObservedException); |
| 84 | + Console.WriteLine("NLog export success"); |
| 85 | +} |
0 commit comments