Inspecting ASP.NET integration testing logs made easy with JetBrains Rider

Published on Wednesday, April 5, 2023

Photo by Nathan Bingle on Unsplash

Trying to spot something meaningful

The other day I was integration testing a Saga in the kliento code base. The tests failed and I wanted to skim through the logs to find something meaningful.

Scrolling through thousands of lines of log in a monochrome style is no fun... (to me this approach sometimes is easier than debugging anyway).

First things first: how do I get this output?

When spinning up my tests in Alba, I'm registering a XUnit sink for Serilog, so I get my logs redirected to the test output window in Rider:

public class When_recording_a_lead_inquiry_from_email : IAsyncLifetime
{
public When_recording_a_lead_inquiry_from_email(
ITestOutputHelper testOutputHelper
)

{
_testOutputHelper = testOutputHelper;
}

public async Task InitializeAsync()
{
var testServices = new TestServices();
var configuration = await testServices.GetTestConfigurationRoot();

var serilogLogger = Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.TestOutput(_testOutputHelper)
.CreateLogger();

var dotnetILogger = new SerilogLoggerFactory(serilogLogger)
.CreateLogger<Program>();

var builder = ConfigureHost.GetHostBuilder(
configuration,
services =>
{
services.AddSingleton<ILogger>(dotnetILogger);
});

// arrange act assert...
}
}

My test output looks like this then:

The joy of black text on white background

While scrolling through the look I was thinking "would be nice if there would be some color coding for the log in Rider...".

And the next step was to spin up a search which eventually ended up on the landing page for "GrepConsole", a plugin for IntelliJ based IDEs like Rider which does exactly what I was looking for: colorize my test output logs.

After playing around with some settings, my logs now look like this:

much better, isn't it?

Much easier to spot exceptions, isn't it?

What's even better: you can add arbitrary expressions to filter and colorize fragments or lines.

So I set up a section for regular .NET log output colors and I added another one for Wolverine status messages. That way I can easily spot successful or failed messages.

That's my GrepConsole config so far:

GrepConsole settings

Right now, there's only one downside: I didn't find a way in Rider to export/import these settings although this seems to work in other JetBrains IDEs.

Update

Looks like the settings get synced using repository sync 🎉️

What are your thoughts about
"Inspecting ASP.NET integration testing logs made easy with JetBrains Rider"?
Drop me a line - I'm looking forward to your feedback!