Serilog.Sinks.RichTextBox.WinForms.Colored 1.2.0

Requires NuGet 3.3 or higher.

dotnet add package Serilog.Sinks.RichTextBox.WinForms.Colored --version 1.2.0
NuGet\Install-Package Serilog.Sinks.RichTextBox.WinForms.Colored -Version 1.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Serilog.Sinks.RichTextBox.WinForms.Colored" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Serilog.Sinks.RichTextBox.WinForms.Colored --version 1.2.0
#r "nuget: Serilog.Sinks.RichTextBox.WinForms.Colored, 1.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Serilog.Sinks.RichTextBox.WinForms.Colored as a Cake Addin
#addin nuget:?package=Serilog.Sinks.RichTextBox.WinForms.Colored&version=1.2.0

// Install Serilog.Sinks.RichTextBox.WinForms.Colored as a Cake Tool
#tool nuget:?package=Serilog.Sinks.RichTextBox.WinForms.Colored&version=1.2.0

Serilog.Sinks.RichTextBox.WinForms.Colored

NuGet Downloads Latest version License

A Serilog sink that writes log events to any WinForms RichTextBox control with coloring and custom theme support.

Screenshot of Serilog.Sinks.RichTextBox.WinForms.Colored in action

Getting started

Install the Serilog.Sinks.RichTextBox.WinForms.Colored package from NuGet:

Install-Package Serilog.Sinks.RichTextBox.WinForms.Colored

Declare your RichTextBox control and give it a name that you can reference it from the code-behind. e.g.:

private System.Windows.Forms.RichTextBox richTextBox1;
private void InitializeComponent()
{
    this.richTextBox1.BackColor = System.Drawing.SystemColors.Window;
    this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.richTextBox1.Font = new System.Drawing.Font("Consolas", 10.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
    this.richTextBox1.Location = new System.Drawing.Point(0, 0);
    this.richTextBox1.Name = "richTextBox1";
}

Then enable the sink using the following snippet:

var options = new RichTextBoxSinkOptions(ThemePresets.Dark, 200, 5, true);
var sink = new RichTextBoxSink(richTextBox1, _options);
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Sink(sink, LogEventLevel.Verbose)
    .Enrich.WithThreadId()
    .CreateLogger();

Log.Information("Hello, world!");

Log events will be written to the RichTextBox control:

[11:54:36 INF] Hello, world!

Themes

The following built-in themes are available at this time:

Theme Description
ThemePresets.Dark Styled to replicate the default theme of Serilog.Sinks.Console
ThemePresets.Light A theme with a light background and contrasting colors.

Output templates

The format of events to the RichTextBox can be modified by providing a template renderer to the sink.

var options = new RichTextBoxSinkOptions(ThemePresets.Dark, 200, 5, true);
var renderer = new TemplateRenderer(ThemePresets.Dark, "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}");
var sink = new RichTextBoxSink(richTextBox1, _options, renderer);
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Sink(sink, LogEventLevel.Verbose)
    .Enrich.WithThreadId()
    .CreateLogger();

Log.Information("Hello, world!");

Copyright © 2022 Simon Vonhoff & Contributors - Provided under the Apache License, Version 2.0.

Product Compatible and additional computed target framework versions.
.NET net6.0-windows7.0 is compatible.  net7.0-windows was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0-windows7.0

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.0 2,135 9/25/2023
1.1.2 5,886 10/16/2022
1.1.1 788 9/9/2022
1.1.0 1,094 6/24/2022
1.0.2 786 6/11/2022
1.0.1 817 5/16/2022
1.0.0 800 5/9/2022

Added new logger configuration.
Added auto-scroll property.
Exposed the RichTextBox sink class.
Updated documentation.