ZLogger.Scintilla 0.0.8

dotnet add package ZLogger.Scintilla --version 0.0.8
                    
NuGet\Install-Package ZLogger.Scintilla -Version 0.0.8
                    
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="ZLogger.Scintilla" Version="0.0.8" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZLogger.Scintilla" Version="0.0.8" />
                    
Directory.Packages.props
<PackageReference Include="ZLogger.Scintilla" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ZLogger.Scintilla --version 0.0.8
                    
#r "nuget: ZLogger.Scintilla, 0.0.8"
                    
#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.
#:package ZLogger.Scintilla@0.0.8
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ZLogger.Scintilla&version=0.0.8
                    
Install as a Cake Addin
#tool nuget:?package=ZLogger.Scintilla&version=0.0.8
                    
Install as a Cake Tool

ZLogger.Scintilla

High-throughput, syntax-highlighted log viewer control for WinForms and WPF, built on Scintilla.NET and ZLogger.

Features

  • Zero-allocation render pipeline (ArrayPool<byte>, pre-allocated filter buffer)
  • Structured payload pretty-printing with inline JSON blocks
  • Clickable URL detection and custom linkifier support (ILinkifier)
  • Per-token colorization via ILogColorizer
  • Real-time threshold level filtering — SetFilter(LogLevel.Warning) shows Warning/Error/Critical
  • Find Next / Find Previous with match counter, async-first navigation
  • Dark and light themes (IScintillaTheme), line numbers toggle
  • IHost / HostBuilder integration for WPF, WinForms, and Revit add-ins

Quick Start

// WinForms — viewer is created inside AddZLoggerScintillaWinForms
services.AddLogging(logging =>
    logging.AddZLoggerScintillaWinForms(
        v => v
            .SetTheme(ScintillaThemes.Dark)
            .WithColorized(new MyColorizer())
            .WithLinkify(new MyLinkifier())
    )
);

// Retrieve from DI
var viewer = host.Services.GetRequiredService<ScintillaLogViewer>();
panel.Controls.Add(viewer.ScintillaControl);
viewer.Start();

// Runtime control
viewer.SetFilter(LogLevel.Warning);
viewer.HighlightSearch("error");
var pos = await viewer.FindNextAsync();
viewer.SetTheme(ScintillaThemes.Light);
viewer.SetPrettyJson(true);
viewer.SetLineNumbers(true);
viewer.Clear();
// WPF
services.AddLogging(logging =>
    logging.AddZLoggerScintillaWpf(
        v => v.SetTheme(ScintillaThemes.Dark)
    )
);

var viewer = host.Services.GetRequiredService<ScintillaLogViewerWpf>();
hostGrid.Children.Add((UIElement)viewer.HostElement);

Documentation

Document Description
docs/architecture.md Component map, pipeline flow, thread model (mermaid diagrams)
docs/usage.md Registration, runtime API, builder options, extension points
docs/testing.md Test suite overview, contracts, coverage map
docs/benchmarks.md Benchmark results, analysis, regression policy

Extension Points

Only 3 interfaces for user implementation:

Interface Purpose
IScintillaTheme Custom color theme (18 properties)
ILogColorizer Per-token foreground color override
ILinkifier Clickable token detection

Test Suite

116 tests — 0 failures

dotnet test ZLogger.Scintilla.Tests/ -c Release

Benchmarks

Key results vs Serilog+RichTextBox (Intel Core Ultra 7 265K · .NET 8.0.25):

Scenario Result
Enqueue throughput (50k, 4 producers) 2–8× faster
Memory allocation (sustained 100k) 3–13× less
Search / FindNext (50k lines) 32× – 662,000× faster
Pixel render Equivalent (±4%)
dotnet run -c Release --project ZLogger.Scintilla.Benchmarks -- --filter *

Target Frameworks

  • net48 — WinForms / WPF legacy
  • net8.0-windows — WinForms / WPF modern

Dependencies

Package Purpose
Scintilla5.NET Editor engine
ZLogger Structured logging source
Microsoft.Extensions.Logging ILogger / IHost integration
System.Threading.Channels Bounded ingest queue
LookupEngine Object decomposition for pretty JSON (bundled via ILRepack)

Note: LookupEngine is included as a git submodule and merged into ZLogger.Scintilla.dll at build time using ILRepack. The NuGet package ships a single assembly with no external LookupEngine dependency.

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net10.0-windows was computed. 
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
0.0.8 96 7/4/2026
0.0.7 99 7/3/2026
0.0.6 137 3/22/2026
0.0.5 107 3/22/2026
0.0.4 114 3/22/2026
0.0.3 117 3/21/2026
0.0.2 119 3/20/2026
0.0.1 113 3/20/2026