Skip to content

Commit fac151f

Browse files
committed
Expose Destructure.AsScalar(Type scalarType) to the configuration
1 parent 761f014 commit fac151f

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReader.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,7 @@ internal static IList<MethodInfo> FindDestructureConfigurationMethods(IReadOnlyC
384384
found.Add(GetSurrogateConfigurationMethod<LoggerDestructuringConfiguration, int, object>((c, m, _) => ToMaximumDepth(c, m)));
385385
found.Add(GetSurrogateConfigurationMethod<LoggerDestructuringConfiguration, int, object>((c, m, _) => ToMaximumStringLength(c, m)));
386386
found.Add(GetSurrogateConfigurationMethod<LoggerDestructuringConfiguration, int, object>((c, m, _) => ToMaximumCollectionCount(c, m)));
387+
found.Add(GetSurrogateConfigurationMethod<LoggerDestructuringConfiguration, Type, object>((c, t, _) => AsScalar(c, t)));
387388
}
388389

389390
return found;
@@ -435,6 +436,9 @@ internal static LoggerConfiguration ToMaximumStringLength(LoggerDestructuringCon
435436
internal static LoggerConfiguration ToMaximumCollectionCount(LoggerDestructuringConfiguration loggerDestructuringConfiguration, int maximumCollectionCount)
436437
=> loggerDestructuringConfiguration.ToMaximumCollectionCount(maximumCollectionCount);
437438

439+
internal static LoggerConfiguration AsScalar(LoggerDestructuringConfiguration loggerDestructuringConfiguration, Type scalarType)
440+
=> loggerDestructuringConfiguration.AsScalar(scalarType);
441+
438442
internal static LoggerConfiguration FromLogContext(LoggerEnrichmentConfiguration loggerEnrichmentConfiguration)
439443
=> loggerEnrichmentConfiguration.FromLogContext();
440444

test/Serilog.Settings.Configuration.Tests/ConfigurationSettingsTests.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,5 +703,53 @@ public void DestructuringWithCustomExtensionMethodIsApplied()
703703

704704
Assert.Equal("\"hardcoded\"", formattedProperty);
705705
}
706+
707+
[Fact]
708+
public void DestructuringAsScalarIsAppliedWithShortTypeName()
709+
{
710+
var json = @"{
711+
""Serilog"": {
712+
""Destructure"": [
713+
{
714+
""Name"": ""AsScalar"",
715+
""Args"": { ""scalarType"": ""System.Version"" }
716+
}]
717+
}
718+
}";
719+
720+
LogEvent evt = null;
721+
var log = ConfigFromJson(json)
722+
.WriteTo.Sink(new DelegatingSink(e => evt = e))
723+
.CreateLogger();
724+
725+
log.Information("Destructuring as scalar {@Scalarized}", new Version(2,3));
726+
var prop = evt.Properties["Scalarized"];
727+
728+
Assert.IsType<ScalarValue>(prop);
729+
}
730+
731+
[Fact]
732+
public void DestructuringAsScalarIsAppliedWithAssemblyQualifiedName()
733+
{
734+
var json = $@"{{
735+
""Serilog"": {{
736+
""Destructure"": [
737+
{{
738+
""Name"": ""AsScalar"",
739+
""Args"": {{ ""scalarType"": ""{typeof(Version).AssemblyQualifiedName}"" }}
740+
}}]
741+
}}
742+
}}";
743+
744+
LogEvent evt = null;
745+
var log = ConfigFromJson(json)
746+
.WriteTo.Sink(new DelegatingSink(e => evt = e))
747+
.CreateLogger();
748+
749+
log.Information("Destructuring as scalar {@Scalarized}", new Version(2,3));
750+
var prop = evt.Properties["Scalarized"];
751+
752+
Assert.IsType<ScalarValue>(prop);
753+
}
706754
}
707755
}

0 commit comments

Comments
 (0)