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
<PackageReference Include="OutWit.Common.Logging.Loki" Version="2.0.0" />
<PackageVersion Include="OutWit.Common.Logging.Loki" Version="2.0.0" />
<PackageReference Include="OutWit.Common.Logging.Loki" />
paket add OutWit.Common.Logging.Loki --version 2.0.0
#r "nuget: OutWit.Common.Logging.Loki, 2.0.0"
#:package OutWit.Common.Logging.Loki@2.0.0
#addin nuget:?package=OutWit.Common.Logging.Loki&version=2.0.0
#tool nuget:?package=OutWit.Common.Logging.Loki&version=2.0.0
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. |
-
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 (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.