Cerbi.Serilog.GovernanceAnalyzer
1.1.2
dotnet add package Cerbi.Serilog.GovernanceAnalyzer --version 1.1.2
NuGet\Install-Package Cerbi.Serilog.GovernanceAnalyzer -Version 1.1.2
<PackageReference Include="Cerbi.Serilog.GovernanceAnalyzer" Version="1.1.2" />
<PackageVersion Include="Cerbi.Serilog.GovernanceAnalyzer" Version="1.1.2" />
<PackageReference Include="Cerbi.Serilog.GovernanceAnalyzer" />
paket add Cerbi.Serilog.GovernanceAnalyzer --version 1.1.2
#r "nuget: Cerbi.Serilog.GovernanceAnalyzer, 1.1.2"
#addin nuget:?package=Cerbi.Serilog.GovernanceAnalyzer&version=1.1.2
#tool nuget:?package=Cerbi.Serilog.GovernanceAnalyzer&version=1.1.2
Cerbi.Serilog.Governance
๐ Real-time governance enforcement for Serilog using Cerbi โ the structured logging validator for modern .NET systems.
๐ What It Does
Cerbi helps enforce logging safety, structure, and compliance in real time.
๐ Enforces required/forbidden fields
๐ Blocks logs with unsafe values
๐๏ธ Validates enums and field types
๐ง Supports relaxed logging bypass (logger.Relax()
)
๐ Enriches logs with governance tags (optional)
๐ Works with any Serilog sink (Console, File, Seq, etc.)
๐ NuGet Packages
- โ๏ธ Serilog Plugin:
Cerbi.Serilog.Governance
- ๐ง Core Validator:
Cerbi.Governance.Runtime
- ๐ Full suite and docs: https://cerbi.io
- ๐ชต Logging library:
CerbiStream
โก Quick Start
1๏ธโฃ Install the Serilog plugin
dotnet add package Cerbi.Serilog.Governance
2๏ธโฃ Create cerbi_governance.json
{
"EnforcementMode": "Strict",
"LoggingProfiles": {
"Orders": {
"RequireTopic": false,
"AllowedTopics": ["Orders", "Users"],
"FieldSeverities": {
"userId": "Required",
"email": "Required",
"password": "Forbidden"
},
"FieldEnums": {
"Status": ["Pending", "Approved", "Rejected"]
},
"AllowRelax": true
}
}
}
3๏ธโฃ Configure Serilog with Cerbi filtering
using Cerbi.Serilog.Governance;
Log.Logger = new LoggerConfiguration()
.Filter.WithCerbiGovernanceFiltering(options =>
{
options.Profile = "Orders";
options.ConfigPath = "cerbi_governance.json";
})
.WriteTo.Console()
.CreateLogger();
๐ Example Log Calls
โ Valid Log
logger
.ForContext("userId", "abc123")
.ForContext("email", "user@example.com")
.ForContext("Status", "Approved")
.Information("Order submitted");
โ Missing Required Field (blocked)
logger
.ForContext("email", "user@example.com")
.Information("Missing userId");
โ Forbidden Field (blocked)
logger
.ForContext("userId", "abc123")
.ForContext("email", "user@example.com")
.ForContext("password", "supersecret")
.Information("Attempted login");
๐งช Relaxed Logging (bypass)
logger
.Relax()
.ForContext("email", "test@example.com")
.Information("Non-compliant, but allowed in Relax mode");
Relaxed logs are not blocked, but are tagged as
GovernanceRelaxed: true
.
๐ค Console Output Example
{
"userId": "abc123",
"email": "user@example.com",
"Status": "Approved"
}
If enriched with governance:
{
"GovernanceProfileUsed": "Orders",
"GovernanceViolations": [],
"GovernanceRelaxed": false
}
๐ง Notes
[CerbiTopic]
support is planned once the runtime exposesValidate(..., callerType)
orEvaluate(...)
.- Use
.Enrich.WithCerbiGovernanceTagging(...)
if you want to annotate logs without filtering them.
๐ See Also
- ๐ Cerbi homepage: https://cerbi.io
- ๐ CerbiStream logging library: https://www.nuget.org/packages/CerbiStream
- ๐งฐ Roslyn Analyzer:
Cerbi.Governance
๐ผ Why Use CerbiStream?
While Cerbi.Serilog.Governance
adds runtime enforcement to Serilog, CerbiStream
offers:
- Built-in support for governance decorators like
[CerbiTopic("...")]
- Source generator + analyzer enforcement for compile-time rules
- Flexible multi-sink fallback (file, blob, queue)
- Real-time enforcement + tagging built into logger API
Use
CerbiStream
if you want governance baked directly into your logging library with rich metadata routing and enterprise compliance controls.
Made with โค๏ธ by Cerbi
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 was computed. 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 was computed. 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. |
-
net8.0
- Cerbi.Governance.Core (>= 1.0.2)
- Cerbi.Governance.Runtime (>= 1.1.1)
- Newtonsoft.Json (>= 13.0.3)
- Serilog (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.