YMJake.Serilog.Sinks.VictoriaLogs
1.0.4
dotnet add package YMJake.Serilog.Sinks.VictoriaLogs --version 1.0.4
NuGet\Install-Package YMJake.Serilog.Sinks.VictoriaLogs -Version 1.0.4
<PackageReference Include="YMJake.Serilog.Sinks.VictoriaLogs" Version="1.0.4" />
<PackageVersion Include="YMJake.Serilog.Sinks.VictoriaLogs" Version="1.0.4" />
<PackageReference Include="YMJake.Serilog.Sinks.VictoriaLogs" />
paket add YMJake.Serilog.Sinks.VictoriaLogs --version 1.0.4
#r "nuget: YMJake.Serilog.Sinks.VictoriaLogs, 1.0.4"
#:package YMJake.Serilog.Sinks.VictoriaLogs@1.0.4
#addin nuget:?package=YMJake.Serilog.Sinks.VictoriaLogs&version=1.0.4
#tool nuget:?package=YMJake.Serilog.Sinks.VictoriaLogs&version=1.0.4
Serilog.Sinks.VictoriaLogs
A Serilog sink that ships log events to VictoriaLogs using the JSON streaming API.
Inspired by serilog-sinks-grafana-loki, it adopts the same proven building blocks: bounded queue, portable timer, exponential backoff, pluggable batch formatter, native HttpClient stack, and an embedded sample API.
Features
- Direct integration with VictoriaLogs insert API via
HttpClient. - Bounded in-memory queue with periodic batching and exponential backoff scheduling.
- Gzip payload support, configurable send buffer, static fields, labels, and stream fields.
- Customisable batch formatter (
IVictoriaLogsBatchFormatter) selectable via code orappsettings. - Swappable HTTP client implementations (
UseGzipHttpClientorHttpClientFactory). - Sample WebAPI (
sample/VictoriaLogs.SampleApi) demonstrating configuration and usage.
Getting Started
Add the sink package to your project and configure Serilog:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration)
.WriteTo.Console()
.WriteTo.VictoriaLogs(
endpoint: "http://localhost:9428",
configure: options =>
{
options.StreamFields = new[] { "app" };
options.Labels.Add(new VictoriaLogsLabel { Key = "app", Value = "victorialogs-demo" });
options.UseGzipCompression = true;
})
.CreateLogger();
Configuration with appsettings.json
{
"Serilog": {
"Using": [ "Serilog.Sinks.VictoriaLogs" ],
"WriteTo": [
{ "Name": "Console" },
{
"Name": "VictoriaLogs",
"Args": {
"options": {
"Endpoint": "http://localhost:9428",
"UseGzipCompression": true,
"StreamFields": [ "app" ],
"Labels": [
{ "Key": "app", "Value": "victorialogs-sample-api" }
],
"BatchFormatterType": "MyNamespace.CustomFormatter, MyAssembly"
}
}
}
]
}
}
If BatchFormatterType is omitted the sink falls back to DefaultVictoriaLogsBatchFormatter. Custom formatters must implement IVictoriaLogsBatchFormatter.
HTTP client options
UseGzipCompressioncompresses request bodies sent to VictoriaLogs.UseGzipHttpClientuses an HTTP client that automatically decompresses gzip/deflate responses.HttpClientFactoryprovides a customIVictoriaLogsHttpClient; this takes precedence over other options:
.WriteTo.VictoriaLogs(endpoint: "...", configure: options =>
{
options.HttpClientFactory = () => new MyCustomVictoriaLogsHttpClient();
});
Sample API
Run the sample WebAPI to see the sink in action:
cd sample/VictoriaLogs.SampleApi
dotnet run
The /logs/test endpoint emits a few log events you can inspect inside VictoriaLogs.
License
This project is licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. 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 was computed. 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 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 8.0.0)
- Serilog (>= 2.12.0)
- System.Memory (>= 4.5.5)
- System.Text.Encodings.Web (>= 8.0.0)
- System.Text.Json (>= 8.0.5)
-
net6.0
- Serilog (>= 2.12.0)
-
net8.0
- Serilog (>= 2.12.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.