Skip to content

Commit 43345f1

Browse files
committed
PR feedback, and added IDestructuringPolicy to sample program and README
1 parent 4ab6ec0 commit 43345f1

File tree

4 files changed

+41
-7
lines changed

4 files changed

+41
-7
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Configuration is read from the `Serilog` section.
1515
],
1616
"Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
1717
"Destructure": [
18+
{ "Name": "With", "Args": { "policy": "Sample.CustomPolicy, Sample" } },
1819
{ "Name": "ToMaximumDepth", "Args": { "maximumDestructuringDepth": 4 } },
1920
{ "Name": "ToMaximumStringLength", "Args": { "maximumStringLength": 100 } },
2021
{ "Name": "ToMaximumCollectionCount", "Args": { "maximumCollectionCount": 10 } }

sample/Sample/Program.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Linq;
77
using Serilog.Core;
88
using Serilog.Events;
9+
using System.Collections.Generic;
910

1011
namespace Sample
1112
{
@@ -41,9 +42,12 @@ public static void Main(string[] args)
4142
logger.Information("Destructure with max collection count:\n{@BigData}",
4243
new { TenItems = new string[] { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" } });
4344

45+
logger.Information("Destructure with policy to strip password:\n{@LoginData}",
46+
new LoginData { Username = "BGates", Password = "isityearoflinuxyet" });
47+
4448
Console.WriteLine("\nPress \"q\" to quit, or any other key to run again.\n");
4549
}
46-
while (!args.Contains("--run-once") && (Console.ReadKey().KeyChar != 'q'));
50+
while(!args.Contains("--run-once") && (Console.ReadKey().KeyChar != 'q'));
4751
}
4852
}
4953

@@ -56,4 +60,29 @@ public bool IsEnabled(LogEvent logEvent)
5660
return true;
5761
}
5862
}
63+
64+
public class LoginData
65+
{
66+
public string Username;
67+
public string Password;
68+
}
69+
70+
public class CustomPolicy : IDestructuringPolicy
71+
{
72+
public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory, out LogEventPropertyValue result)
73+
{
74+
result = null;
75+
76+
if(value is LoginData)
77+
{
78+
result = new StructureValue(
79+
new List<LogEventProperty>
80+
{
81+
new LogEventProperty("Username", new ScalarValue(((LoginData)value).Username))
82+
});
83+
}
84+
85+
return (result != null);
86+
}
87+
}
5988
}

sample/Sample/appsettings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444
"Application": "Sample"
4545
},
4646
"Destructure": [
47+
{
48+
"Name": "With",
49+
"Args": { "policy": "Sample.CustomPolicy, Sample" }
50+
},
4751
{
4852
"Name": "ToMaximumDepth",
4953
"Args": { "maximumDestructuringDepth": 3 }

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ internal static MethodInfo SelectConfigurationMethod(IEnumerable<MethodInfo> can
350350

351351
internal static IList<MethodInfo> FindSinkConfigurationMethods(IReadOnlyCollection<Assembly> configurationAssemblies)
352352
{
353-
var found = FindConfigurationExtensions(configurationAssemblies, typeof(LoggerSinkConfiguration));
353+
var found = FindConfigurationExtensionMethods(configurationAssemblies, typeof(LoggerSinkConfiguration));
354354
if (configurationAssemblies.Contains(typeof(LoggerSinkConfiguration).GetTypeInfo().Assembly))
355355
found.Add(GetSurrogateConfigurationMethod<LoggerSinkConfiguration, Action<LoggerConfiguration>, LoggingLevelSwitch>((c, a, s) => Logger(c, a, LevelAlias.Minimum, s)));
356356

@@ -359,14 +359,14 @@ internal static IList<MethodInfo> FindSinkConfigurationMethods(IReadOnlyCollecti
359359

360360
internal static IList<MethodInfo> FindAuditSinkConfigurationMethods(IReadOnlyCollection<Assembly> configurationAssemblies)
361361
{
362-
var found = FindConfigurationExtensions(configurationAssemblies, typeof(LoggerAuditSinkConfiguration));
362+
var found = FindConfigurationExtensionMethods(configurationAssemblies, typeof(LoggerAuditSinkConfiguration));
363363

364364
return found;
365365
}
366366

367367
internal static IList<MethodInfo> FindFilterConfigurationMethods(IReadOnlyCollection<Assembly> configurationAssemblies)
368368
{
369-
var found = FindConfigurationExtensions(configurationAssemblies, typeof(LoggerFilterConfiguration));
369+
var found = FindConfigurationExtensionMethods(configurationAssemblies, typeof(LoggerFilterConfiguration));
370370
if (configurationAssemblies.Contains(typeof(LoggerFilterConfiguration).GetTypeInfo().Assembly))
371371
found.Add(GetSurrogateConfigurationMethod<LoggerFilterConfiguration, ILogEventFilter, object>((c, f, _) => With(c, f)));
372372

@@ -375,7 +375,7 @@ internal static IList<MethodInfo> FindFilterConfigurationMethods(IReadOnlyCollec
375375

376376
internal static IList<MethodInfo> FindDestructureConfigurationMethods(IReadOnlyCollection<Assembly> configurationAssemblies)
377377
{
378-
var found = FindConfigurationExtensions(configurationAssemblies, typeof(LoggerDestructuringConfiguration));
378+
var found = FindConfigurationExtensionMethods(configurationAssemblies, typeof(LoggerDestructuringConfiguration));
379379
if(configurationAssemblies.Contains(typeof(LoggerDestructuringConfiguration).GetTypeInfo().Assembly))
380380
{
381381
found.Add(GetSurrogateConfigurationMethod<LoggerDestructuringConfiguration, IDestructuringPolicy, object>((c, d, _) => With(c, d)));
@@ -389,14 +389,14 @@ internal static IList<MethodInfo> FindDestructureConfigurationMethods(IReadOnlyC
389389

390390
internal static IList<MethodInfo> FindEventEnricherConfigurationMethods(IReadOnlyCollection<Assembly> configurationAssemblies)
391391
{
392-
var found = FindConfigurationExtensions(configurationAssemblies, typeof(LoggerEnrichmentConfiguration));
392+
var found = FindConfigurationExtensionMethods(configurationAssemblies, typeof(LoggerEnrichmentConfiguration));
393393
if (configurationAssemblies.Contains(typeof(LoggerEnrichmentConfiguration).GetTypeInfo().Assembly))
394394
found.Add(GetSurrogateConfigurationMethod<LoggerEnrichmentConfiguration, object, object>((c, _, __) => FromLogContext(c)));
395395

396396
return found;
397397
}
398398

399-
internal static IList<MethodInfo> FindConfigurationExtensions(IReadOnlyCollection<Assembly> configurationAssemblies, Type configType)
399+
internal static IList<MethodInfo> FindConfigurationExtensionMethods(IReadOnlyCollection<Assembly> configurationAssemblies, Type configType)
400400
{
401401
return configurationAssemblies
402402
.SelectMany(a => a.ExportedTypes

0 commit comments

Comments
 (0)