Код: Выделить всё
[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);
}
}

Итак, «высокопроизводительное ведение журнала» принесло мне на 50 % больше памяти и снижение производительности на 25 %.
Могло бы кто-нибудь, пожалуйста, помогите мне понять, что здесь может быть не так, и как добиться повышения производительности при использовании сообщений журнала с Serilog в качестве журнала?
Подробнее здесь: https://stackoverflow.com/questions/793 ... nce-issues
Мобильная версия