OutWit.Common.Logging.Loki 2.0.0

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

OutWit.Common.Logging.Loki

Grafana Loki backend for OutWit.Common.Logging.Query.

Contents

  • LokiHttpClient — typed HttpClient over /loki/api/v1/*. Handles basic auth and the X-Scope-OrgID multi-tenancy header.
  • LokiOptionsBaseUrl, TenantId, basic-auth creds, DefaultLabels (always applied as stream selectors), MaxResultLimit, MaxRange.
  • LokiLogQueryProvider : ILogQueryProvider — translates LogQuery to LogQL via LogQL/LogQlBuilder, parses the streams / matrix responses back to LogEntry and LogStatistics.
  • Response/* — JSON DTOs.

LogQL mapping

Neutral query LogQL output
DefaultLabels = { service_name = "WitIdentity" } {service_name="WitIdentity"}
LogFilter on stream label (service.name, level, …) folded into the stream selector
LogFilter on JSON attribute ... \| json \| attr op "value"
FullTextSearch = "passkey" ... \|~ "passkey"
From..To start=<unix-ns>&end=<unix-ns>
PageSize &limit=N (capped to LokiOptions.MaxResultLimit)
SortOrder &direction=forward|backward

For GetStatisticsAsync, the provider issues sum by (level) (count_over_time({...} | json [range])) and aggregates per-level counts (Trace/Debug → DebugCount; Error/Critical/Fatal → ErrorCount).

Known limitations

Method Behavior
FindOffsetAsync Loki has no row-offset concept — returns -1. UI callers should narrow the time window instead.
GetStorageInfoAsync Loki's HTTP API doesn't expose ingestion volume. Returns an all-null LogStorageInfo. Operators wanting quota data should integrate with the Loki admin metrics endpoint or Prometheus directly.
GetDistinctValuesAsync Backed by /loki/api/v1/label/{name}/values — works for stream labels (cheap) but not for arbitrary JSON-body attributes.

Usage

services.AddSingleton(new LokiOptions
{
    BaseUrl = "http://loki:3100",
    DefaultLabels = new Dictionary<string, string> { ["service_name"] = "WitIdentity" }
});
services.AddHttpClient<LokiHttpClient>();
services.AddSingleton<ILogQueryProvider, LokiLogQueryProvider>();

License

Apache 2.0 — see LICENSE.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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 OutWit.Common.Logging.Loki:

Package Downloads
OutWit.Shared.Logging.Provider.Loki

Grafana Loki log provider plugin for OutWit hosts. Thin wrapper over OutWit.Common.Logging.Loki — registers an ILogQueryProvider that translates neutral LogQuery requests into LogQL and dispatches them against /loki/api/v1/*. Drop into the host's @Logging folder and set Logging__ProviderKey=Loki.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 109 5/16/2026
1.0.0 95 5/13/2026