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" />
<PackageReference Include="OutWit.Common.Logging.Loki" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=OutWit.Common.Logging.Loki&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
OutWit.Common.Logging.Loki
Grafana Loki backend for OutWit.Common.Logging.Query.
Contents
LokiHttpClient— typed HttpClient over/loki/api/v1/*. Handles basic auth and theX-Scope-OrgIDmulti-tenancy header.LokiOptions—BaseUrl,TenantId, basic-auth creds,DefaultLabels(always applied as stream selectors),MaxResultLimit,MaxRange.LokiLogQueryProvider : ILogQueryProvider— translatesLogQueryto LogQL viaLogQL/LogQlBuilder, parses the streams / matrix responses back toLogEntryandLogStatistics.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 | Versions 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.
-
net10.0
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- OutWit.Common.Logging.Query (>= 1.0.0)
-
net6.0
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
- OutWit.Common.Logging.Query (>= 1.0.0)
-
net7.0
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
- OutWit.Common.Logging.Query (>= 1.0.0)
-
net8.0
- Microsoft.Extensions.Http (>= 9.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.8)
- OutWit.Common.Logging.Query (>= 1.0.0)
-
net9.0
- Microsoft.Extensions.Http (>= 9.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.8)
- OutWit.Common.Logging.Query (>= 1.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.