ANSI/Windows 10 terminal themes for Serilog
Nothing makes a long flight … fly by … like a fun programming project! On my way back from NDC Oslo on the weekend, I dug into custom console theming for Serilog, adding ANSI color support for a slicker experience on Linux, macOS, and Windows 10.
Here’s a new Visual Studio Code-inspired theme:
// Install-Package Serilog.Sinks.Console -Pre
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console(theme: AnsiConsoleTheme.Code)
.CreateLogger();
Log.Debug("Starting up");
var user = new { Name = Environment.UserName, Id = 42 };
Log.Information("Hello, {@User}!", user);
In Windows 10’s cmd.exe:

You can see how colorized output makes it much easier to read structured data/JSON in log output. This is an ANSI 256-color theme, supported by modern terminals on Linux and macOS. On Windows, you’ll need a recently-updated Windows 10 machine for this.
(.NET programs won’t show ANSI colors on Windows by default - the ENABLE_VIRTUAL_TERMINAL_PROCESSING flag needs to be set with PInvoke first - thanks @khellang for the tip! You can see how it’s done portably for .NET Framework and .NET Core targets in the WindowsConsole helper class.)
So far, there are a handful of built-in themes:
ConsoleTheme.None- no styling; looks like the original Serilog.Sinks.Console outputSystemConsoleTheme.Literate- styled to replicate Serilog.Sinks.Literate, using theSystem.Consolecoloring modes supported on all Windows/.NET targets (this is the default when no theme is specified)SystemConsoleTheme.Grayscale- a new theme, using only shades of gray, white, and black; I like the subtlety of this oneAnsiConsoleTheme.Literate- an ANSI 16-color version of the “literate” theme; added with the intention that we’ll update this to 256-colors for a more refined lookAnsiConsoleTheme.Grayscale- an ANSI version of the “grayscale” themeAnsiConsoleTheme.Code- the VS Code-inspired theme above
Give it a try! Adding a new theme should be easy; check out the examples in the SystemConsoleThemes and AnsiConsoleThemes classes. If you come up with a theme you like (or spot some bugs) we’d love to hear from you over at the GitHub repository.