Serilog schreibt nicht in die Datei, wenn der Konfigurationsabschnitt für WriteTo ungültig istC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Serilog schreibt nicht in die Datei, wenn der Konfigurationsabschnitt für WriteTo ungültig ist

Post by Anonymous »

Ich schreibe einen Webdienst, der Serilog verwendet. Ich hatte Probleme damit, Dateien herauszuschreiben (aber die Konsolenprotokollierung funktionierte). Mir ist aufgefallen, dass sich das Setup geändert hat, als .net Core 2.0 auf der Grundlage dieser und der Erklärung dieser Seite herauskam.

Allerdings kann ich jetzt keine Protokollierung sehen (vielleicht waren es in der Vergangenheit tatsächlich die standardmäßigen M$-Logger, die ich gesehen habe).

So wird program.cs eingerichtet:

Code: Select all

public class Program
{
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.AddUserSecrets()
.Build();

public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration.GetSection("Serilog"))
.CreateLogger();

try
{
Log.Information("Starting webhost...");
BuildWebHost(args).Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseConfiguration(Configuration)
.UseSerilog()
.Build();
}
Meine appsettings.json hat diesen Abschnitt im Stammverzeichnis:

Code: Select all

"Serilog": {
"Using" : ["Serilog.Sinks.Console", "Serilog.Sinks.File"],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
},
"Enrich" :  ["FromLogContext"],
"WriteTo":  [
{"Name": "Console" },
{"Name": "Debug" },
{"Name": "File", "Args":  {"path": "%LogDir%\\sampleapp\\log-{Date}.txt", "rollingInterval":  "Day", "shared": true }  }
]
},
"Properties": {
"Application": "sampleapp"
}
},
Beachten Sie, dass %LogDir% eine Umgebungsvariable auf meinem Computer ist und in anderen Anwendungen problemlos aufgelöst wird. Der Pfad ist bereits erstellt und der Ordner „Logs“ verfügt über vollständige RW-Berechtigungen für die Anmeldeinformationen, die diese App verwendet.

Ich nenne Protokollierung so...

Code: Select all

    private readonly ILogger
 _logger;
private readonly IPartnerDao _partnerDao;

public PartnerController(ILogger logger, IPartnerDao partnerDao)
{
_logger = logger;
_partnerDao = partnerDao;
}

[HttpGet]
[Route("{titleCode}")]
public async Task Get(string titleCode)
{
_logger.LogInformation("Test logging");
}
Dennoch wird irgendwie nichts im ASP.NET Core-Webserverfenster angezeigt und es wird keine Datei auf meinem Computer erstellt, wenn der Dienst ausgeführt wird.

Übersehe ich etwas Offensichtliches?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post