OutWit.Common.Logging.Query 1.0.0

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

OutWit.Common.Logging.Query

Vendor-neutral log query model and provider abstraction. Lets any application talk to a log backend (NewRelic, Loki, on-disk files, …) through a single interface, swapping concrete implementations without touching the consumer code.

Contents

Interface

  • ILogQueryProvider — eight async methods covering:
    • QueryAsync(LogQuery) — full query with filters / time / paging
    • GetLogsAsync(from, to, filters) / GetRecentLogsAsync(lookback, filters) — convenience shortcuts
    • SearchAsync(text, lookback) — free-text message search
    • GetDistinctValuesAsync(from, to, attribute) — facet values for filter dropdowns
    • FindOffsetAsync(query, timestamp) — scroll-to-timestamp
    • GetStatisticsAsync(from, to, filters) — per-level counts
    • GetStorageInfoAsync() — used bytes / quota / total entries / vendor-specific breakdown

Model (OutWit.Common.Logging.Query.Model)

  • LogQuery / LogPage / LogEntry / LogFilter (+ factory helpers LogFilter.Eq/NotEq/Contains/...)
  • LogStatistics — per-level counts with computed rates
  • LogStorageInfo — neutral storage view (UsedBytes, LimitBytes, TotalEntries, PeriodFrom/To, Breakdown for vendor extras)
  • Enums: LogFilterOperator, LogSortOrder, LogSeverity (Trace..Fatal), LogAttribute (canonical names + per-vendor aliases)
  • LogFilters static helpers — LevelEquals(LogSeverity), MessageContains(text), ServiceEquals(name), etc.

All model types inherit ModelBase (value-comparison via Is(), immutable updates via With()) and are MemoryPack-friendly for WitRPC transport.

Backends

Backend Package
NewRelic (NerdGraph / NRQL) OutWit.Common.Logging.NewRelic
Grafana Loki (HTTP / LogQL) OutWit.Common.Logging.Loki
Local Serilog JSON files planned for OutWit.Shared.Logging.File

Usage

// Register a vendor-specific impl in DI:
services.AddSingleton<ILogQueryProvider, NewRelicLogQueryProvider>();   // or LokiLogQueryProvider, ...

// Consume the neutral interface anywhere in your app:
public sealed class LogsViewModel
{
    public LogsViewModel(ILogQueryProvider logs) { ... }

    private async Task LoadAsync()
    {
        var page = await m_logs.GetRecentLogsAsync(
            TimeSpan.FromHours(1),
            filters: [LogFilters.LevelAtLeast(LogSeverity.Warning)]);

        Entries = page.Items;
    }
}

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 (5)

Showing the top 5 NuGet packages that depend on OutWit.Common.Logging.Query:

Package Downloads
OutWit.Common.Logging.NewRelic

NewRelic NerdGraph log query backend for OutWit.Common.Logging.Query. Implements ILogQueryProvider over NRQL (search, statistics, distinct values, scroll-to-timestamp) and adds NewRelic-specific billing data via INewRelicProvider.

OutWit.Common.Logging.Loki

Grafana Loki log query backend for OutWit.Common.Logging.Query. Implements ILogQueryProvider via LogQL over the /loki/api/v1 HTTP endpoints (query_range, count_over_time, label values). Supports basic auth and X-Scope-OrgID multi-tenancy.

OutWit.Identity.Contracts

Data contracts for WitIdentity administration — application management, dashboard, invitations, and result types. 2.0 swaps vendor-specific NewRelic log models for the neutral OutWit.Common.Logging.Query shape; consumers built against 1.x need to retarget.

OutWit.Shared.Logging.Providers

Plugin contract for OutWit log query providers. Defines ILogProviderPlugin (a marker over IWitPlugin) so a host can load NewRelic / Loki / file-scanning log backends via WitPluginLoader. Also defines HostLoggingInfo — a documented side-channel that lets file-scanning plugins discover the host's log directory without duplicating Serilog config.

OutWit.Shared.Logging.Blazor

Blazor WebAssembly log viewer components built on MudBlazor. Toolbar, filter tree, table, and detail panel that consume any OutWit ILogQueryProvider — works with the NewRelic, Loki, and File log provider plugins under OutWit.Shared.Logging.Provider.*. Static assets served at _content/OutWit.Shared.Logging.Blazor/.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 237 5/13/2026