A Serilog sink that writes log events to a WinForms RichTextBox with support for coloring and custom themes.
- Colorful, formatted log events in a WinForms RichTextBox control
- Dark and Light theme presets with customization options
- Configurable output templates
- Auto-scrolling to latest messages
- Line limiting to control memory usage
Install the package from NuGet:
Install-Package Serilog.Sinks.RichTextBox.WinForms.Colored
Declare your RichTextBox control:
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";
}
Configure the logger:
Log.Logger = new LoggerConfiguration()
.WriteTo.RichTextBox(richTextBox1)
.CreateLogger();
Log.Information("Hello, world!");
You can customize the sink using various parameters from the RichTextBox extension method:
Log.Logger = new LoggerConfiguration()
.WriteTo.RichTextBox(
richTextBoxControl: richTextBox1,
minimumLogEventLevel: LogEventLevel.Debug,
outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}",
theme: ThemePresets.Light,
messageBatchSize: 100,
messagePendingInterval: 10,
autoScroll: true,
maxLogLines: 1000)
.CreateLogger();
Available built-in themes:
Theme | Description |
---|---|
ThemePresets.Dark |
Similar to the default theme of Serilog.Sinks.Console |
ThemePresets.Light |
Light background with contrasting colors |
Shorter alternatives were already reserved in the NuGet registry but were not used, so a more descriptive name was needed for this implementation.
This sink is designed for WinForms applications to avoid unnecessary dependencies. Using a WPF-based logging component would require adding the entire WPF framework, greatly increasing the size of the application for a small logging feature.
If you find value in this project, there are several ways you can contribute:
- Give the project a star on GitHub.
- Support the project through GitHub Sponsors.
- Improve documentation, report bugs, or submit pull requests.
This project is licensed under the Apache License, Version 2.0.