mostlylucid.ephemeral.logging 2.3.2

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

Mostlylucid.Ephemeral.Logging

Provides adapters between Microsoft.Extensions.Logging and the signal world.

Log↔Signal features

  • Log → Signal: SignalLoggerProvider converts ILogger events into slugged signals such as log.error.orders.dbfailure, carrying typed payloads with EventId, category, level, exception metadata, and captured scope properties so you can target specific errors by EventId.Id, EventId.Name, or exception type.
  • Signal → Log: SignalToLoggerAdapter mirrors signals back into ILogger with inferred severity, payload, and message formatting so signals appear in standard telemetry sinks.
  • Customizable mapping: SignalLogHookOptions.MapSignal/MapPayload let you control the emitted signal name or payload structure if you prefer different prefixes or labels.
var sink = new SignalSink();
var typedSink = new TypedSignalSink<SignalLogPayload>(sink);

using var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole();
    builder.AddProvider(new SignalLoggerProvider(typedSink, new SignalLogHookOptions
    {
        MinimumLevel = LogLevel.Warning,
        MapSignal = ctx => $"alert.{ctx.EventId.Name ?? ctx.EventId.Id}"
    }));
});

The typed payload gives you the EventId, exception type/message, and any captured scope values, so attribute jobs or signal watchers can use those labels to drive downstream logic.

Usage

  • Log → Signals: attach SignalLoggerProvider to your ILoggerFactory (with a shared SignalSink or TypedSignalSink<SignalLogPayload>). The provider emits slugged log.{level}.{category}.{event} signals populated with typed payloads so attribute jobs, caches, or other listeners can react to logging events like any other signal.
  • Signals → Log: plug SignalToLoggerAdapter into your signal sink to mirror signals back into ILogger with inferred log level, messages, and event ids.

Both directions keep the SignalSink/SignalEvent plumbing centralized while packaging the logging surface separately.

Sample: log watcher pipeline

var sink = new SignalSink();
var typedSink = new TypedSignalSink<SignalLogPayload>(sink);

using var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole();
    builder.AddProvider(new SignalLoggerProvider(typedSink));
});

using var watcher = new EphemeralSignalJobRunner(sink, new[] { new LogWatcherJobs(sink) });

var logger = loggerFactory.CreateLogger("orders");
logger.LogError(new EventId(1001, "DbFailure"), "Order store failed");

The LogWatcherJobs class (see mostlylucid.ephemeral.attributes) can then listen for log.error.* signals, raise downstream escalation signals, and keep observability and remediation co-located with your signal-driven workflows. Use SignalToLoggerAdapter when you want the resulting signal activity to re-appear in the standard logging pipeline as well.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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. 
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 mostlylucid.ephemeral.logging:

Package Downloads
mostlylucid.ephemeral.complete

Meta-package that references all Mostlylucid.Ephemeral packages - bounded async execution with signals, atoms, and patterns. Install this single package to get everything.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.3.2 89 1/9/2026
2.3.1 94 1/9/2026
2.3.1-alpha0 87 1/9/2026
2.3.0 270 1/8/2026
2.3.0-alpha1 86 1/8/2026
2.1.0 99 1/8/2026
2.1.0-preview 86 1/8/2026
2.0.1 89 1/8/2026
2.0.0 129 1/8/2026
2.0.0-alpha1 87 1/8/2026
1.7.1 419 12/11/2025
1.6.8 432 12/9/2025
1.6.7 423 12/9/2025
1.6.6 425 12/9/2025
1.6.5 430 12/9/2025
1.6.0 411 12/8/2025
1.5.0 412 12/8/2025
1.3.0 295 12/7/2025
1.2.2 291 12/7/2025