RimWorks.RimLogging 3.0.4

dotnet add package RimWorks.RimLogging --version 3.0.4
                    
NuGet\Install-Package RimWorks.RimLogging -Version 3.0.4
                    
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="RimWorks.RimLogging" Version="3.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RimWorks.RimLogging" Version="3.0.4" />
                    
Directory.Packages.props
<PackageReference Include="RimWorks.RimLogging" />
                    
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 RimWorks.RimLogging --version 3.0.4
                    
#r "nuget: RimWorks.RimLogging, 3.0.4"
                    
#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 RimWorks.RimLogging@3.0.4
                    
#: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=RimWorks.RimLogging&version=3.0.4
                    
Install as a Cake Addin
#tool nuget:?package=RimWorks.RimLogging&version=3.0.4
                    
Install as a Cake Tool

RimLogging: RimWorld log viewer and bug report sharing

Steam Workshop Discord Maintainability Rating Reliability Rating

<img src="https://raw.githubusercontent.com/RimWorks/rimworld-logging-framework/main/About/ModIcon.png" alt="RimLogging icon" width="96" align="right">

Read your RimWorld log inside the game. Filter it down to the red error you care about, then share it as a link with one click. RimLogging is also a structured logging framework for RimWorld 1.6+ mods. It replaces vanilla Verse.Log and UnityEngine.Debug.Log with one filterable pipeline. Every dependent mod shares it.

If you have used HugsLib's publish-log button, this covers the same job. HugsLib uploads the whole file as one wall of text and hands you a link. RimLogging lets you narrow to one channel and one level first, then sends what is left with your mod list attached.

  • Hierarchical channels (XML defs or transient) with prefix-based resolution.
  • Serilog-style templated messages plus anonymous-object structured context.
  • Six levels: Trace, Debug, Info, Warn, Error, Fatal.
  • Multi-sink output (Verse writeback, rolling text/NDJSON files, in-memory) with a plugin sink API.
  • Lock-free MPSC queue with a background drain; synchronous bypass for Error / Fatal.
  • Three-pane in-game log viewer with a channel tree and an expression filter DSL. The detail pane docks to the bottom, docks to the right, or pops out into its own window.
  • A Roslyn analyzer in the NuGet package that flags leftover Verse.Log calls at build time.

RimLogging preview card

Install

As a Steam Workshop dependency (recommended for shipped mods): end users install the Workshop mod once and every consumer mod shares one dll. Declare it in your About/About.xml:

<modDependencies>
    <li>
        <packageId>RimWorks.RimLogging</packageId>
        <displayName>RimLogging</displayName>
        <steamWorkshopUrl>steam://url/CommunityFilePage/REPLACE_WITH_WORKSHOP_ID</steamWorkshopUrl>
    </li>
</modDependencies>
<loadAfter>
    <li>RimWorks.RimLogging</li>
</loadAfter>

Or bundle it from NuGet. The build copies the dll, and its System.Text.Json runtime dependencies, into your mod's Assemblies/, so you don't need the Workshop dependency:

dotnet add package RimWorks.RimLogging

Usage

using RimWorks.RimLogging;

// Templated message with positional args.
Log.Info("colony {Name} founded at {Tile}", colony.Name, colony.Tile);

// Structured context from an anonymous object.
Log.Warn("low food", new { pawn, days_left = 2 });

// Exceptions: pass the exception first, or fold it into the context.
Log.Error(ex, "save failed");

// Tick-loop throttling: once ever, or at most once per interval. The key is global.
Log.WarnOnce("no-power", "the reactor has no power");
Log.WarnEvery("no-power", TimeSpan.FromMinutes(1), "the reactor still has no power");

// Timing: logs the message with an elapsed_ms context value when the block closes.
using (Log.Timed("worldgen")) { GenerateWorld(); }

// Explicit channel.
Log.Info("Cosmere.Roshar.Surgebinding", "bond formed", new { spren = spren.Label });

// Explicit channel + templated args: pass an explicit array so the channel
// overload is selected (a bare trailing value binds as structured context).
Log.Info("Cosmere.Roshar.Surgebinding", "bond formed with {Spren}", new object?[] { spren.Label });

The first string argument is the channel only when a later argument disambiguates the overload; Log.Info("text", arg) treats "text" as the message. Formatting is lazy: if no registered sink accepts the entry's level, the template is never rendered.

Docs

Contributing

See CONTRIBUTING.md for build commands, commit conventions, and translation notes.

More modding tools from RimWorks

Tool What it does
Pickle Run Gherkin tests against a live RimWorld session, in the game
Quickstarts Boot straight into a configured colony from the dev quicktest menu

MIT licensed.

Product Compatible and additional computed target framework versions.
.NET Framework net472 is compatible.  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 (1)

Showing the top 1 NuGet packages that depend on RimWorks.RimLogging:

Package Downloads
RimWorks.RimObs.Library

RimObs mod-side library: performance profiling and telemetry for RimWorld mods. Register named sections and metrics; the out-of-process collector aggregates the data and serves a dashboard. Net472 / net48, RimWorld 1.6+.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.4 332 10/1/2026
3.0.3 76 10/1/2026
3.0.2 80 9/30/2026
3.0.1 76 9/30/2026
3.0.0 97 9/27/2026
2.29.4 709 9/25/2026
2.29.3 124 9/25/2026
2.29.2 197 9/21/2026
2.29.1 190 9/19/2026
2.29.0 162 9/15/2026
2.28.1 130 9/14/2026
2.28.0 120 9/14/2026
2.27.3 175 9/13/2026
2.27.2 134 9/13/2026
2.27.1 187 9/8/2026
2.27.0 144 9/8/2026
2.26.2 100 9/8/2026
2.26.1 115 9/8/2026
2.26.0 126 9/8/2026
2.25.21 117 9/8/2026
Loading failed