Herald.OSS
0.1.0
See the version list below for details.
dotnet add package Herald.OSS --version 0.1.0
NuGet\Install-Package Herald.OSS -Version 0.1.0
<PackageReference Include="Herald.OSS" Version="0.1.0" />
<PackageVersion Include="Herald.OSS" Version="0.1.0" />
<PackageReference Include="Herald.OSS" />
paket add Herald.OSS --version 0.1.0
#r "nuget: Herald.OSS, 0.1.0"
#:package Herald.OSS@0.1.0
#addin nuget:?package=Herald.OSS&version=0.1.0
#tool nuget:?package=Herald.OSS&version=0.1.0
Herald.OSS
Open-source structured logging core for .NET. Apache 2.0.
Herald.OSS is the upstream distribution of the Herald logging kernel.
The kernel passes a stack-allocated LogEventBuffer directly to sinks
through one contract — IKernelSink. Every built-in sink implements
it; the HeraldSinkBase abstract class is the one-line entry point
for custom sinks. The accept path stays zero-allocation across every
call shape — typed-args, params ReadOnlySpan<LogProperty>, the
interpolated handler, and the level-bound interpolated variant.
Targets .NET 8, .NET 9, and .NET 10. AOT-clean. Trim-safe.
Status — v0.1.0
This is the first open-source release. The source is forked from
Herald.Core at commit
98d23fd with edition-gating machinery removed (no Pro / Enterprise
capability checks, no provenance gate, no distribution-hardening
overlay). Functionality of the kernel + pipeline + sinks is otherwise
unchanged. See FORK_SCOPE.md for the authoritative
list of what was stripped.
What's in v0.1.0
src/— the pipeline, kernel, formatters, addons not gated to Pro / Enterprisenative/dotnet/— the .NET implementation of the kernel, pipeline, and bootstrapgenerators/— source-generator project ([HeraldLog]etc.)tests/— workhorse test suite covering build, kernel fan-out, level filtering, multi-tenancy, hot reload, sink isolation, and plugin-trust paths (17 tests, all passing on net8 / net9 / net10)benchmarking/library/{net8,net9,net10}/— narrow Herald-only benches across TFMsbenchmarking/comparisons/net10/— head-to-head benches against Serilog, NLog, MEL, ZLogger, log4netdocs/howtos/— task-oriented guides (quickstart, sinks, operations)docs/guides/— architectural and SDK referencesdocs/benchmarks/— published benchmark methodology and resultsdocs/testing/— test suite scope and conventionsLICENSE— Apache License 2.0NOTICE— required Apache 2.0 attribution
Benchmark headlines (4-property accept call, net10):
| Library | Latency | Allocation |
|---|---|---|
| Herald.OSS | 27 ns | 0 B |
| NLog | 58 ns | 248 B |
| MEL | 151 ns | 208 B |
| log4net | 191 ns | 336 B |
| Serilog | 208 ns | 720 B |
| ZLogger | 299 ns | 71 B |
Full results, methodology, and reproduction commands live under
docs/benchmarks/. The consolidated rollup is
docs/benchmarks/consolidated-benchmarks.md.
Getting started
- New to Herald? Start at
docs/howtos/HOWTO-QUICKSTART.md. - Need a custom sink?
docs/howtos/HOWTO-SINKS.md. - Running in production?
docs/howtos/HOWTO-OPERATIONS.md.
Guides (conceptual + SDK):
docs/guides/architecture.md— the three-layer picture.docs/guides/building-sinks.md— how sinks plug in and what it costs at runtime.docs/guides/kernel-sink-pattern.md— zero-allocation custom sinks viaIKernelSink.docs/guides/aot-and-trimming.md— publishing native AOT against Herald.OSS.docs/guides/security-overview.md— what the pipeline defends and what it does not.
Quick example
using MMP.Herald.Events;
using MMP.Herald.Quick;
var result = QuickLogBuilder.Create()
.WithConsoleSink()
.WithMinimumLevel("info")
.BuildAndCommit();
result.Logger.Info(LogCategory.App,
"User {UserId} purchased {Sku} for {Price}", 42, "alpha", 9.99);
Relationship to Herald.Core
Herald.OSS is the upstream. Herald.Core is the commercial distribution layered on top:
Herald.OSS (Apache 2.0)
│
└─→ Herald.Core (Apache 2.0 + edition-gated extensions)
│
├─→ Herald.Pro packages (extensions gated to Pro)
└─→ Herald.Enterprise packages (extensions gated to Enterprise)
Future feature work that doesn't depend on the gate machinery lands in Herald.OSS first; Herald.Core absorbs it. Edition-gated work lands directly in Herald.Core.
Contributing
Contributions welcome. See CONTRIBUTING.md for the
process. First-time contributors will be asked to sign the
CLA — the same CLA covers
every Herald repository.
Security vulnerabilities: see SECURITY.md. Do not file
public issues.
License
| Product | Versions 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 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
- Google.Protobuf (>= 3.34.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Superpower (>= 3.0.0)
-
net8.0
- Google.Protobuf (>= 3.34.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Superpower (>= 3.0.0)
-
net9.0
- Google.Protobuf (>= 3.34.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Superpower (>= 3.0.0)
NuGet packages (89)
Showing the top 5 NuGet packages that depend on Herald.OSS:
| Package | Downloads |
|---|---|
|
MMP.Licensing.Contracts
Canonical contracts surface for Herald licensing: HeraldLicenseException, HeraldLicenseRevokedException, LicenseInfo, HeraldLicense static gate, and the v2.1 EditionCapabilityPresets catalog (generated from data/licensing/{capabilities,presets}/*.json by tools/catalog-gen/). Paid packages + Server/ManagementApi ProjectReference this package so the exception types have one runtime identity at the Server middleware boundary, regardless of which paid assembly throws. |
|
|
MMP.Licensing
Ed25519 license verification for MMPWorks paid packages. v2 wire format + v2.1 caps/cv claim expansion. Engine (pure verifier with EditionCapabilityPresets cap-set resolution) + platform (locator, cache, gate) layers. v2.2 adds license-lifecycle surface (LicenseStateMachine, DemoModeSource, LicenseNag), trusted-clock binding (ITrustedClock three-tier resolution), and hosted check-in client (CheckInClient with Polly v8 resilience) per ADR-211/214/216/219. v2.3 consumes Herald.OSS 0.8.0 cap surface: HeraldLicenseVerifierV2.Verify seeds HeraldVersion.CurrentCapabilities (first-write-wins); new ComponentLifecycleCoordinator drives Active ↔ Unsupported transitions per ADR-220 and owns HeraldVersion.ReplaceCurrentCapabilities for post-boot cap-set changes. Source-linked by consumer products per ADR-0001. |
|
|
MMP.Herald.Business
Herald observability metapackage for business and enterprise deployments. Pulls in every Herald.Sinks destination — HTTP, TCP, UDP, every Enterprise HTTP sink (Seq, Splunk, Honeycomb, Datadog, Loki, SignalFx, Sentry, PagerDuty), community transports (Elasticsearch, Slack, GenericWebhook), and the OTLP trio. Depend on this one package and pick destinations at registration time. |
|
|
MMP.Herald.Sinks.Otlp
Herald sinks for the OpenTelemetry Logs Protocol. Ships three sinks (OTLP JSON, OTLP protobuf, length-delimited protobuf file) that share a hand-rolled protobuf writer so the package stays AOT-clean — no generated messages, no reflection, no IMessage codegen. |
|
|
MMP.Herald.Sinks.Seq
Posts Herald log events to a Seq server as newline-delimited CLEF over HTTP. Matches the wire format Serilog.Sinks.Seq uses so existing Seq deployments keep working. |
GitHub repositories
This package is not used by any popular GitHub repositories.