From e9dc63b370baaaa2953d64c32826d2fe1db57672 Mon Sep 17 00:00:00 2001 From: Matt Cole Date: Tue, 8 May 2018 22:16:20 +0100 Subject: [PATCH] Ignore null additional fields --- .../Controllers/ValuesController.cs | 4 +-- .../appsettings.Development.json | 10 ------- ...Extensions.Logging.Samples.NetCore1.csproj | 6 +++++ .../Program.cs | 2 -- ...Extensions.Logging.Samples.NetCore2.csproj | 6 +++++ .../Program.cs | 2 -- src/Gelf.Extensions.Logging/UdpGelfClient.cs | 2 +- .../GelfLoggerTests.cs | 27 +++++++++++++++++++ 8 files changed, 42 insertions(+), 17 deletions(-) delete mode 100644 samples/Gelf.Extensions.Logging.Samples.AspNetCore2/appsettings.Development.json diff --git a/samples/Gelf.Extensions.Logging.Samples.AspNetCore2/Controllers/ValuesController.cs b/samples/Gelf.Extensions.Logging.Samples.AspNetCore2/Controllers/ValuesController.cs index 707afe9..bdd076a 100644 --- a/samples/Gelf.Extensions.Logging.Samples.AspNetCore2/Controllers/ValuesController.cs +++ b/samples/Gelf.Extensions.Logging.Samples.AspNetCore2/Controllers/ValuesController.cs @@ -18,9 +18,9 @@ public ValuesController(ILogger logger) [HttpGet] public IEnumerable Get() { - using (_logger.BeginScope(("method_name", nameof(Get)))) + using (_logger.BeginScope(("scope_field", "foo"))) { - var result = new[] {"foo", "bar"}; + var result = new[] {"bar", "baz"}; _logger.LogInformation("Returning {value1} and {value2} from controller", result[0], result[1]); diff --git a/samples/Gelf.Extensions.Logging.Samples.AspNetCore2/appsettings.Development.json b/samples/Gelf.Extensions.Logging.Samples.AspNetCore2/appsettings.Development.json deleted file mode 100644 index fa8ce71..0000000 --- a/samples/Gelf.Extensions.Logging.Samples.AspNetCore2/appsettings.Development.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Logging": { - "IncludeScopes": false, - "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" - } - } -} diff --git a/samples/Gelf.Extensions.Logging.Samples.NetCore1/Gelf.Extensions.Logging.Samples.NetCore1.csproj b/samples/Gelf.Extensions.Logging.Samples.NetCore1/Gelf.Extensions.Logging.Samples.NetCore1.csproj index d2d02c4..badd9cc 100644 --- a/samples/Gelf.Extensions.Logging.Samples.NetCore1/Gelf.Extensions.Logging.Samples.NetCore1.csproj +++ b/samples/Gelf.Extensions.Logging.Samples.NetCore1/Gelf.Extensions.Logging.Samples.NetCore1.csproj @@ -22,4 +22,10 @@ + + + Always + + + diff --git a/samples/Gelf.Extensions.Logging.Samples.NetCore1/Program.cs b/samples/Gelf.Extensions.Logging.Samples.NetCore1/Program.cs index a18a42f..6027388 100644 --- a/samples/Gelf.Extensions.Logging.Samples.NetCore1/Program.cs +++ b/samples/Gelf.Extensions.Logging.Samples.NetCore1/Program.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -12,7 +11,6 @@ public class Program public static void Main() { var configuration = new ConfigurationBuilder() - .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); diff --git a/samples/Gelf.Extensions.Logging.Samples.NetCore2/Gelf.Extensions.Logging.Samples.NetCore2.csproj b/samples/Gelf.Extensions.Logging.Samples.NetCore2/Gelf.Extensions.Logging.Samples.NetCore2.csproj index 9ce438d..aefe21a 100644 --- a/samples/Gelf.Extensions.Logging.Samples.NetCore2/Gelf.Extensions.Logging.Samples.NetCore2.csproj +++ b/samples/Gelf.Extensions.Logging.Samples.NetCore2/Gelf.Extensions.Logging.Samples.NetCore2.csproj @@ -21,4 +21,10 @@ + + + Always + + + diff --git a/samples/Gelf.Extensions.Logging.Samples.NetCore2/Program.cs b/samples/Gelf.Extensions.Logging.Samples.NetCore2/Program.cs index b181100..41f4246 100644 --- a/samples/Gelf.Extensions.Logging.Samples.NetCore2/Program.cs +++ b/samples/Gelf.Extensions.Logging.Samples.NetCore2/Program.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -12,7 +11,6 @@ public class Program public static void Main() { var configuration = new ConfigurationBuilder() - .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); diff --git a/src/Gelf.Extensions.Logging/UdpGelfClient.cs b/src/Gelf.Extensions.Logging/UdpGelfClient.cs index acba27e..b90a556 100644 --- a/src/Gelf.Extensions.Logging/UdpGelfClient.cs +++ b/src/Gelf.Extensions.Logging/UdpGelfClient.cs @@ -51,7 +51,7 @@ private static byte[] GetMessageBytes(GelfMessage message) foreach (var field in message.AdditionalFields) { - messageJson[$"_{field.Key}"] = field.Value as string ?? field.Value.ToString(); + messageJson[$"_{field.Key}"] = field.Value?.ToString(); } return Encoding.UTF8.GetBytes(messageJson.ToString()); diff --git a/test/Gelf.Extensions.Logging.Tests/GelfLoggerTests.cs b/test/Gelf.Extensions.Logging.Tests/GelfLoggerTests.cs index 26cbd7e..5af8840 100644 --- a/test/Gelf.Extensions.Logging.Tests/GelfLoggerTests.cs +++ b/test/Gelf.Extensions.Logging.Tests/GelfLoggerTests.cs @@ -138,6 +138,33 @@ public async Task Sends_message_with_additional_fields_from_structured_log() Assert.Equal("bar", message.second_value); } + [Fact] + public async Task Ignores_null_values_in_additional_fields() + { + var options = _loggerFixture.LoggerOptions; + options.AdditionalFields["foo"] = null; + + using (var loggerFactory = _loggerFixture.CreateLoggerFactory(options)) + { + var sut = loggerFactory.CreateLogger(nameof(GelfLoggerTests)); + + using (sut.BeginScope(("bar", (string) null))) + using (sut.BeginScope(new Dictionary + { + ["baz"] = null + })) + { + sut.LogInformation(_faker.Lorem.Sentence()); + } + + var message = await _graylogFixture.WaitForMessageAsync(); + + Assert.Throws(() => message.foo); + Assert.Throws(() => message.bar); + Assert.Throws(() => message.baz); + } + } + public void Dispose() { _loggerFixture.Dispose();