Ich wollte, dass meine Anwendung in einer Datei protokolliert werden kann, und suchte nach mehr als dem Standard-Protokollierungsframework für .NET Core 2.2. Ich sehe, dass Serilog den Job machen könnte. Ich kann jedoch kein Dokument zum Einrichten von Serilog in der .NET Core Console-Anwendung mit Dependency Injection finden. Ich sehe nur ASP.NET-Materialien, was ich wahrscheinlich nicht brauche.
Ich habe es selbst gemacht. Ich habe (Nuget) installiert:
- Serilog
- Serilog.Extensions.Logging
- Serilog.Sinks.File
- Serilog.Sinks.Console (um Serilog für alle meine Protokollierungen zu verwenden)
Ich habe eine Erweiterung für erstelltServiceCollection
public static void AddLogging(this IServiceCollection services, Microsoft.Extensions.Logging.LogLevel logLevel)
{
var serilogLogger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("log.txt")
.CreateLogger();
services.AddLogging(builder =>
{
builder.SetMinimumLevel(logLevel);
builder.AddSerilog(logger: serilogLogger, dispose: true);
});
}
Die Protokollierung funktioniert jedoch:
- Die Protokollstufe ist nicht das, worauf ich sie eingestellt habe. Es scheint, dass Serilog das INFO-Level verwendet, obwohl ich DEBUG haben wollte. Warum wird meine Einstellung nicht respektiert? Immerhin verwende ich immer noch das Protokollierungsframework von NET Core, also verwende ich es zum Einrichten der Protokollierungsstufe
- mache ich dieses Setup tatsächlich richtig? Ich bin mir nicht sicher, ob es so
dispose
sein solltrue
. Im Allgemeinen möchte ich, dass das Dependency Injection Framework von NET Core die Entsorgung von Diensten übernimmt.
builder.SetMinimumLevel
Einstellung hat eine höhere Priorität als die Einstellung von Serilog. Daher kann ich die ausführliche Protokollierung in Serilog und die tatsächlich gewünschte Stufe in der Microsoft-Protokollierung festlegen, um das zu erhalten, was ich benötige. Ich sehe, dass Sie sich in einer gehosteten Anwendung wie ASP.NET befinden. Wahrscheinlich verwenden Sie das Serilog.AspNetCore-Paket. In meinem Fall habe ich keinen Host.