LogBurrow.Abstractions 0.1.0

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

LogBurrow

High-performance, asynchronous .NET logging provider that offloads log delivery to RabbitMQ and stores them as structured documents in MongoDB. Minimizes application overhead and ensures reliable log ingestion.

How it works

your app  ──ILogger──▶  MessageBusLogger  ──LogEvent──▶  RabbitMQ (logs-queue)  ──▶  LogBurrow.Worker  ──▶  MongoDB

The producing application only references LogBurrow.Logging. It plugs a custom ILoggerProvider into the standard Microsoft.Extensions.Logging pipeline, so every ILogger call is turned into a LogEvent and published to the bus. If the broker is unreachable the event is written to the console instead, so nothing is silently dropped. A separate worker drains the queue and persists each entry into MongoDB (one collection per log level).

Projects

src/
  BuildingBlocks/
    Abstractions
    EventBus.RabbitMq
    Logging
    Persistence.Mongo
  Services/
    Worker
  LogBurrow.sln

Project and folder names carry no prefix; assemblies and namespaces stay under LogBurrow.* (e.g. Abstractions builds LogBurrow.Abstractions.dll).

Project Purpose
BuildingBlocks/Abstractions Shared contracts: LogEvent, ILog, connection settings, QueueNames, DateTimeProvider. No third-party dependencies beyond configuration binding.
BuildingBlocks/EventBus.RabbitMq Thin MassTransit/RabbitMQ wrapper: publisher/consumer registration, IMessageBusProvider<TBus>, base consumers, health-gated startup.
BuildingBlocks/Logging The pluggable logging provider (MessageBusLogger, MessageBusLoggerProvider, AddMessageBusLogging). This is the only package a producing app needs.
BuildingBlocks/Persistence.Mongo LogEntity, Mongo context and ILogRepository with the AddMongoLogStore registration.
Services/Worker Background service that consumes LogEvent from logs-queue and writes it through ILogRepository.

Usage — producing application

builder.Logging
    .ClearProviders()
    .AddMessageBusLogging(
        connection: builder.Configuration.GetConfiguration<RabbitMqConnection>());

// optional: block startup until the logging bus is confirmed healthy
await app.AwaitLoggerMessageBus().RunAsync();
{
  "Logging": {
    "LogLevel": { "Default": "None" },
    "MessageBusLogging": {
      "LogLevel": { "Default": "Warning", "MassTransit": "Error" }
    }
  },
  "RabbitMqConnection": {
    "HostData": { "HostName": "localhost", "Port": 5672 },
    "VirtualHost": "/",
    "Credentials": { "Username": "guest", "Password": "guest" }
  }
}

MessageBusLogging is the provider alias — use it under Logging to control which levels this provider forwards, independently of the other providers.

Usage — running the sink

LogBurrow.Worker reads RabbitMqConnection and MongoDbConnection from configuration (see src/Services/Worker/appsettings.json) and can run as a container or a service.

dotnet run --project src/Services/Worker

Packages

The BuildingBlocks projects are published as NuGet packages (Services/Worker is not packable). Package ids keep the LogBurrow. prefix:

Package You need it when
LogBurrow.Logging producing app — the plug-in provider (pulls LogBurrow.Abstractions + LogBurrow.EventBus.RabbitMq)
LogBurrow.Persistence.Mongo building your own sink
LogBurrow.EventBus.RabbitMq building your own publisher/consumer on the same bus
LogBurrow.Abstractions sharing just the LogEvent contract

Consume

dotnet add package LogBurrow.Logging

Shared metadata and the single VersionPrefix live in src/Directory.Build.props.

Build & pack locally

dotnet build src/LogBurrow.sln
dotnet pack src/LogBurrow.sln -c Release -o artifacts

.nupkg + .snupkg land in artifacts/. To test against a consumer before publishing, add that folder as a source:

dotnet nuget add source "$(pwd)/artifacts" -n logburrow-local

Publish

CI mirrors the Telegram.Wallet.Pay.Dotnet layout:

Workflow Trigger What it does
.github/workflows/logburrow-library.yml push / PR to develop (or manual) restore + build src/LogBurrow.sln
.github/workflows/logburrow-library-pack.yml PR merged into master (or manual workflow_dispatch) runs the composite/pack-push action
.github/workflows/composite/pack-push/action.yml — auto-bumps a v* git tag (anothrNick/github-tag-action), packs every BuildingBlocks project with that version and dotnet nuget pushes all *.nupkg (+ *.snupkg) to NuGet.org

Required repository secrets: NUGET_TOKEN (NuGet.org API key) and TOKEN (a PAT with repo scope, used to push the version tag). Control the bump with #patch / #minor / #major in a commit message; default is minor.

Manual push:

dotnet nuget push "artifacts/*.nupkg" --api-key <KEY> --source https://api.nuget.org/v3/index.json --skip-duplicate

Targets .NET 8.

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 was computed.  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 was computed.  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 (3)

Showing the top 3 NuGet packages that depend on LogBurrow.Abstractions:

Package Downloads
LogBurrow.EventBus.RabbitMq

LogBurrow's thin MassTransit/RabbitMQ wrapper: publisher and consumer registration, IMessageBusProvider<TBus>, base consumers and health-gated startup.

LogBurrow.Persistence.Mongo

MongoDB store for LogBurrow log events: LogEntity, the Mongo context and ILogRepository with the AddMongoLogStore() registration. Use it to build a custom sink.

LogBurrow.Logging

Pluggable Microsoft.Extensions.Logging provider that ships log entries to RabbitMQ as structured LogEvent messages, with a console fallback when the broker is unreachable. This is the package a producing application references.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 168 8/30/2026