Skip to content

Commit 815a796

Browse files
author
Thibaud DESODT
committed
Support for AuditTo in configuration
1 parent 3f64b11 commit 815a796

File tree

2 files changed

+39
-18
lines changed

2 files changed

+39
-18
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public void Configure(LoggerConfiguration loggerConfiguration)
4141
ApplyEnrichment(loggerConfiguration);
4242
ApplyFilters(loggerConfiguration);
4343
ApplySinks(loggerConfiguration);
44+
ApplyAuditSinks(loggerConfiguration);
4445
}
4546

4647
void ApplyMinimumLevel(LoggerConfiguration loggerConfiguration)
@@ -98,6 +99,16 @@ void ApplySinks(LoggerConfiguration loggerConfiguration)
9899
}
99100
}
100101

102+
void ApplyAuditSinks(LoggerConfiguration loggerConfiguration)
103+
{
104+
var auditToDirective = _configuration.GetSection("AuditTo");
105+
if (auditToDirective != null)
106+
{
107+
var methodCalls = GetMethodCalls(auditToDirective);
108+
CallConfigurationMethods(methodCalls, FindAuditSinkConfigurationMethods(_configurationAssemblies), loggerConfiguration.AuditTo);
109+
}
110+
}
111+
101112
void IConfigurationReader.ApplySinks(LoggerSinkConfiguration loggerSinkConfiguration)
102113
{
103114
var methodCalls = GetMethodCalls(_configuration);
@@ -260,6 +271,13 @@ internal static IList<MethodInfo> FindSinkConfigurationMethods(IEnumerable<Assem
260271
return found;
261272
}
262273

274+
internal static IList<MethodInfo> FindAuditSinkConfigurationMethods(IEnumerable<Assembly> configurationAssemblies)
275+
{
276+
var found = FindConfigurationMethods(configurationAssemblies, typeof(LoggerAuditSinkConfiguration));
277+
278+
return found;
279+
}
280+
263281
internal static IList<MethodInfo> FindFilterConfigurationMethods(IEnumerable<Assembly> configurationAssemblies)
264282
{
265283
var found = FindConfigurationMethods(configurationAssemblies, typeof(LoggerFilterConfiguration));

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

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -66,27 +66,30 @@ public void SinksAreConfigured()
6666
Assert.Equal(0, DummyRollingFileAuditSink.Emitted.Count);
6767
}
6868

69-
//[Fact]
70-
//public void AuditSinksAreConfigured()
71-
//{
72-
// var settings = new Dictionary<string, string>
73-
// {
74-
// ["using:TestDummies"] = typeof(DummyLoggerConfigurationExtensions).GetTypeInfo().Assembly.FullName,
75-
// ["audit-to:DummyRollingFile.pathFormat"] = "C:\\"
76-
// };
77-
78-
// var log = new LoggerConfiguration()
79-
// .ReadFrom.KeyValuePairs(settings)
80-
// .CreateLogger();
69+
[Fact]
70+
public void AuditSinksAreConfigured()
71+
{
72+
var json = @"{
73+
""Serilog"": {
74+
""Using"": [""TestDummies""],
75+
""AuditTo"": [{
76+
""Name"": ""DummyRollingFile"",
77+
""Args"": {""pathFormat"" : ""C:\\""}
78+
}]
79+
}
80+
}";
8181

82-
// DummyRollingFileSink.Emitted.Clear();
83-
// DummyRollingFileAuditSink.Emitted.Clear();
82+
var log = ConfigFromJson(json)
83+
.CreateLogger();
84+
85+
DummyRollingFileSink.Emitted.Clear();
86+
DummyRollingFileAuditSink.Emitted.Clear();
8487

85-
// log.Write(Some.InformationEvent());
88+
log.Write(Some.InformationEvent());
8689

87-
// Assert.Equal(0, DummyRollingFileSink.Emitted.Count);
88-
// Assert.Equal(1, DummyRollingFileAuditSink.Emitted.Count);
89-
//}
90+
Assert.Equal(0, DummyRollingFileSink.Emitted.Count);
91+
Assert.Equal(1, DummyRollingFileAuditSink.Emitted.Count);
92+
}
9093

9194
[Fact]
9295
public void TestMinimumLevelOverrides()

0 commit comments

Comments
 (0)