From 734ce41ed6032f63329ce7a7dbed57cd0aad4a7b Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Wed, 11 May 2022 11:10:45 +1000 Subject: [PATCH] Add support for for formatting short level names via ToString(); fixes #69 --- .../Expressions/Runtime/RuntimeOperators.cs | 14 ++++++-------- .../Cases/template-evaluation-cases.asv | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Serilog.Expressions/Expressions/Runtime/RuntimeOperators.cs b/src/Serilog.Expressions/Expressions/Runtime/RuntimeOperators.cs index c766087..e2424b6 100644 --- a/src/Serilog.Expressions/Expressions/Runtime/RuntimeOperators.cs +++ b/src/Serilog.Expressions/Expressions/Runtime/RuntimeOperators.cs @@ -17,6 +17,7 @@ using System.Linq; using Serilog.Events; using Serilog.Expressions.Compilation.Linq; +using Serilog.Templates.Rendering; // ReSharper disable ForCanBeConvertedToForeach, InvertIf, MemberCanBePrivate.Global, UnusedMember.Global, InconsistentNaming, ReturnTypeCanBeNotNullable @@ -501,15 +502,12 @@ public static LogEventPropertyValue _Internal_IsNotNull(LogEventPropertyValue? v return null; } - string? toString; - if (sv.Value is IFormattable formattable) + var toString = sv.Value switch { - toString = formattable.ToString(fmt, formatProvider); - } - else - { - toString = sv.Value.ToString(); - } + LogEventLevel level => LevelRenderer.GetLevelMoniker(level, fmt), + IFormattable formattable => formattable.ToString(fmt, formatProvider), + _ => sv.Value.ToString() + }; return new ScalarValue(toString); } diff --git a/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv b/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv index e8ea2f7..5df712a 100644 --- a/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv +++ b/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv @@ -1,6 +1,7 @@ Hello, {'world'}! ⇶ Hello, world! {@l} ⇶ Information {@l:u3} ⇶ INF +{ {level: ToString(@l, 'u3')} } ⇶ {"level":"INF"} Items are {[1, 2]} ⇶ Items are [1,2] Members are { {a: 1, 'b c': 2} } ⇶ Members are {"a":1,"b c":2} {@p} ⇶ {"Name":"nblumhardt"}