MacroDeck.Plugin.Serilog
3.0.0-beta.12
dotnet add package MacroDeck.Plugin.Serilog --version 3.0.0-beta.12
NuGet\Install-Package MacroDeck.Plugin.Serilog -Version 3.0.0-beta.12
<PackageReference Include="MacroDeck.Plugin.Serilog" Version="3.0.0-beta.12" />
<PackageVersion Include="MacroDeck.Plugin.Serilog" Version="3.0.0-beta.12" />
<PackageReference Include="MacroDeck.Plugin.Serilog" />
paket add MacroDeck.Plugin.Serilog --version 3.0.0-beta.12
#r "nuget: MacroDeck.Plugin.Serilog, 3.0.0-beta.12"
#:package MacroDeck.Plugin.Serilog@3.0.0-beta.12
#addin nuget:?package=MacroDeck.Plugin.Serilog&version=3.0.0-beta.12&prerelease
#tool nuget:?package=MacroDeck.Plugin.Serilog&version=3.0.0-beta.12&prerelease
MacroDeck.Plugin.Serilog
Forwards a Macro Deck plugin's own logs to the host, so they show up next to the host's own entries in its log viewer - without changing how you log.
var plugin = MacroDeckPlugin.CreatePlugin(args)
.UseMacroDeckLogging()
.RegisterIntegration<MyIntegration>()
.Build();
await plugin.RunAsync();
UseMacroDeckLogging calls Serilog's own UseSerilog under the hood, so an injected Serilog ILogger,
the static Log APIs and MacroDeck.Sdk.Logging.IntegrationLog all route through it automatically. Configure the pipeline the
normal way with the optional callback - it runs before the Macro Deck sink is attached, so every other
Serilog feature still works:
.UseMacroDeckLogging(cfg => cfg
.MinimumLevel.Debug()
.Enrich.WithMachineName()
.WriteTo.File("plugin.log"))
Calling UseMacroDeckLogging more than once is safe - the second call is a no-op.
Behaviour worth knowing
- Warnings, errors and fatals are never dropped in favor of informational noise. Events queue on
two separate bounded channels, one for
Warningand above and one for everything else, so a flood ofInformationlines cannot push a queuedErrorout. Events are still shipped in the order they were logged - the split only decides what gets dropped under pressure, not what order the host sees things in. - Nothing here blocks the caller. A
logger.Information(...)call always returns immediately, even fully disconnected from the host - excess events past the queue capacity are dropped, not buffered without bound and not waited on. log.publishhas no acknowledgement, matching the wire protocol's fire-and-forget contract for that message type. There is no retry queue and no replay: a batch the host never received is gone. What survives a lost connection is a small bounded local file (plugin-fallback.logunder the plugin's state directory) as a diagnostic tail of what could not be delivered - it is never replayed into the host, so do not expect an outage's logs to reappear once the connection comes back.- Configure batching and the fallback file from the
MacroDeck:Plugin:Loggingconfiguration section, bound toMacroDeckLoggingOptions.
Licensed under Apache-2.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- MacroDeck.Plugin.Hosting (>= 3.0.0-beta.12)
- MacroDeck.Plugin.Protocol (>= 3.0.0-beta.12)
- Serilog (>= 4.4.0)
- Serilog.Extensions.Hosting (>= 10.0.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 |
|---|---|---|
| 3.0.0-beta.12 | 0 | 9/23/2026 |
| 3.0.0-beta.11 | 213 | 9/17/2026 |
| 3.0.0-beta.7 | 81 | 9/16/2026 |
| 3.0.0-beta.6 | 57 | 9/15/2026 |
| 3.0.0-beta.5 | 95 | 9/14/2026 |
| 3.0.0-beta.4 | 179 | 9/11/2026 |
| 3.0.0-beta.3 | 58 | 9/9/2026 |
| 3.0.0-beta.2 | 69 | 9/6/2026 |
| 3.0.0-beta.1 | 71 | 9/6/2026 |