Logger-Meldung + Serilog = Leistungsprobleme?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Logger-Meldung + Serilog = Leistungsprobleme?

Post by Guest »

Wie von Microsoft vorgeschlagen, habe ich versucht, ihren Hochleistungsprotokollierungsansatz (auch als LoggerMessage-Muster bekannt) mit dem Serilog-Logger zu verwenden. Aus irgendeinem Grund brachte es keine Leistungssteigerung, sondern führte ganz im Gegenteil zu einer schlechteren Leistung. Betrachten Sie den folgenden Benchmark:

Code: Select all

[MemoryDiagnoser]
public class SerilogBenchmark
{
private static readonly ILogger Logger;
private static readonly string LogStringTemplate = "User {Username} {Email} has logged in.";
private static Action LoggerAction =
LoggerMessage.Define(
LogLevel.Information,
new EventId(1, "Login"),
LogStringTemplate);

static SerilogBenchmark()
{
var services = new ServiceCollection();

Log.Logger = new LoggerConfiguration()
.WriteTo.TextWriter(TextWriter.Null)
.CreateLogger();

services.AddLogging(builder =>
{
builder.ClearProviders();
builder.AddSerilog(dispose: true);
});

var serviceProvider = services.BuildServiceProvider();
Logger = serviceProvider.GetRequiredService();
}

[Benchmark]
public void TestLogExtension()
{
Logger.LogInformation(LogStringTemplate, "User", "foo@bar.com");
}

[Benchmark]
public void TestLogAction()
{
LoggerAction(Logger, "User", "foo@bar.com", null);
}
}
Ergebnisse sind wie folgt:
Image

„Hochleistungsprotokollierung“ hat mich also mit 50 % mehr Speicherzuweisung und 25 % schlechterer Leistung belohnt.
Könnte Bitte hilft mir jemand zu verstehen, was hier falsch sein könnte Wie kann eine Leistungssteigerung erzielt werden, wenn Logger-Nachrichten mit Serilog als Logger verwendet werden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post