by Guest » 31 Dec 2024, 14:06
Ich verwende Serilog, bevorzuge jedoch MEL (
) Abstraktionen.
Einige Funktionen in Serilogs Serilog.ILogger sind in MELs ILogger nicht verfügbar oder sind verfügbar, aber äußerst ausführlich.
Ich möchte ein Protokollereignis anreichern. Mit Serilog würde ich Folgendes verwenden:
Code: Select all
_logger
.ForContext("Foo", "abc")
.ForContext("Bar", 123)
.ForContext("Baz", true)
.Information("Process returned {Result}", 42);
Aber das MEL-Äquivalent ist:
Code: Select all
using (_logger.BeginScope(new Dictionary {
{ "Foo", "abc" },
{ "Bar", 123 },
{ "Baz", true }
})) {
_logger.LogInformation("Process returned {Result}", 42);
}
Das ist nicht nur hässlich, ich vergesse auch immer die Syntax. Und das gilt sogar für ein einziges Protokollereignis.
Mir ist aufgefallen, dass es für solche Dinge zusätzlich zu den oben genannten noch verschiedene Syntaxen gibt. Gibt es eine einfachere Option?
Ich verwende Serilog, bevorzuge jedoch MEL ([code]Microsoft.Extensions.Logging[/code]) Abstraktionen.
Einige Funktionen in Serilogs Serilog.ILogger sind in MELs ILogger nicht verfügbar oder sind verfügbar, aber äußerst ausführlich.
Ich möchte ein Protokollereignis anreichern. Mit Serilog würde ich Folgendes verwenden:
[code]_logger
.ForContext("Foo", "abc")
.ForContext("Bar", 123)
.ForContext("Baz", true)
.Information("Process returned {Result}", 42);
[/code]
Aber das MEL-Äquivalent ist:
[code]using (_logger.BeginScope(new Dictionary {
{ "Foo", "abc" },
{ "Bar", 123 },
{ "Baz", true }
})) {
_logger.LogInformation("Process returned {Result}", 42);
}
[/code]
Das ist nicht nur hässlich, ich vergesse auch immer die Syntax. Und das gilt sogar für ein einziges Protokollereignis.
Mir ist aufgefallen, dass es für solche Dinge zusätzlich zu den oben genannten noch verschiedene Syntaxen gibt. Gibt es eine einfachere Option?