Skip to content

Commit 4ddb8a4

Browse files
(#170) Add extension methods to write output from logger or provider
1 parent 82c1446 commit 4ddb8a4

File tree

2 files changed

+60
-5
lines changed

2 files changed

+60
-5
lines changed

src/Stravaig.Extensions.Logging.Diagnostics.Tests/XUnit/OutputTestHelperExtensionsTests.cs

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void WriteLine(string format, params object[] args)
2626
}
2727

2828
[Test]
29-
public void RenderedLogMessagesGetSentToOutputTestHelper()
29+
public void RenderedLogEntryMessagesSentToOutputTestHelper()
3030
{
3131
ResetLogSequence();
3232
var outputHelper = new OutputHelper();
@@ -36,11 +36,47 @@ public void RenderedLogMessagesGetSentToOutputTestHelper()
3636

3737
var logs = logger.GetLogs();
3838
outputHelper.WriteLogs(logs);
39-
39+
40+
outputHelper.Messages[0].ShouldBe("[0 Information Stravaig.Extensions.Logging.Diagnostics.Tests.XUnit.OutputTestHelperExtensionTests] This is an information Message.");
41+
outputHelper.Messages[1].ShouldBe("[1 Information Stravaig.Extensions.Logging.Diagnostics.Tests.XUnit.OutputTestHelperExtensionTests] This is a Warning Message.");
42+
}
43+
44+
[Test]
45+
public void RenderedLoggerSentToOutputTestHelper()
46+
{
47+
ResetLogSequence();
48+
var outputHelper = new OutputHelper();
49+
var logger = new TestCaptureLogger<OutputTestHelperExtensionTests>();
50+
logger.LogInformation("This is an information Message.");
51+
logger.LogInformation("This is a Warning Message.");
52+
53+
outputHelper.WriteLogs(logger);
54+
4055
outputHelper.Messages[0].ShouldBe("[0 Information Stravaig.Extensions.Logging.Diagnostics.Tests.XUnit.OutputTestHelperExtensionTests] This is an information Message.");
4156
outputHelper.Messages[1].ShouldBe("[1 Information Stravaig.Extensions.Logging.Diagnostics.Tests.XUnit.OutputTestHelperExtensionTests] This is a Warning Message.");
4257
}
4358

59+
[Test]
60+
public void RenderedLoggerProviderSentToOutputTestHelper()
61+
{
62+
ResetLogSequence();
63+
var outputHelper = new OutputHelper();
64+
var loggerProvider = new TestCaptureLoggerProvider();
65+
var logger1 = loggerProvider.CreateLogger("logger1");
66+
var logger2 = loggerProvider.CreateLogger("logger2");
67+
logger1.LogInformation("This is an information Message on the first logger.");
68+
logger2.LogInformation("This is an information Message on the second logger.");
69+
logger2.LogWarning("This is a Warning Message on the second logger.");
70+
logger1.LogWarning("This is a Warning Message on the first logger.");
71+
72+
outputHelper.WriteLogs(loggerProvider);
73+
74+
outputHelper.Messages[0].ShouldBe("[0 Information logger1] This is an information Message on the first logger.");
75+
outputHelper.Messages[1].ShouldBe("[1 Information logger2] This is an information Message on the second logger.");
76+
outputHelper.Messages[2].ShouldBe("[2 Warning logger2] This is a Warning Message on the second logger.");
77+
outputHelper.Messages[3].ShouldBe("[3 Warning logger1] This is a Warning Message on the first logger.");
78+
}
79+
4480
private void ResetLogSequence()
4581
{
4682
var logEntryType = typeof(LogEntry);
@@ -49,4 +85,4 @@ private void ResetLogSequence()
4985
throw new InvalidOperationException("Expected LogEntry to have a private field called _sequence.");
5086
field.SetValue(null, 0);
5187
}
52-
}
88+
}

src/Stravaig.Extensions.Logging.Diagnostics.XUnit/OutputTestHelperExtensions.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using Microsoft.Extensions.Logging;
34
using Stravaig.Extensions.Logging.Diagnostics.Render;
45
using Xunit.Abstractions;
56

@@ -15,9 +16,27 @@ public static class OutputTestHelperExtensions
1516
/// </summary>
1617
/// <param name="output">The xunit test output helper.</param>
1718
/// <param name="logEntries">The log entries.</param>
18-
/// <param name="formatter"></param>
19+
/// <param name="formatter">An optional formatter that defines how the log entry is to be written.</param>
1920
public static void WriteLogs(this ITestOutputHelper output, IEnumerable<LogEntry> logEntries, Func<LogEntry, string>? formatter = null)
2021
{
2122
logEntries.RenderLogs(formatter ?? Formatter.SimpleBySequence, output.WriteLine);
2223
}
23-
}
24+
25+
/// <summary>
26+
/// Write the logs to the xunit test output helper.
27+
/// </summary>
28+
/// <param name="output">The xunit test output helper.</param>
29+
/// <param name="logger">The logger from which to output the captured logs.</param>
30+
/// <param name="formatter">An optional formatter that defines how the log entry is to be written.</param>
31+
public static void WriteLogs(this ITestOutputHelper output, ITestCaptureLogger logger, Func<LogEntry, string>? formatter = null)
32+
=> output.WriteLogs(logger.GetLogs(), formatter);
33+
34+
/// <summary>
35+
/// Write the logs to the xunit test output helper.
36+
/// </summary>
37+
/// <param name="output">The xunit test output helper.</param>
38+
/// <param name="provider">The log provider from which to output the captured logs.</param>
39+
/// <param name="formatter">An optional formatter that defines how the log entry is to be written.</param>
40+
public static void WriteLogs(this ITestOutputHelper output, TestCaptureLoggerProvider provider, Func<LogEntry, string>? formatter = null)
41+
=> output.WriteLogs(provider.GetAllLogEntries(), formatter);
42+
}

0 commit comments

Comments
 (0)