Serilog创建日志文件,但未写入日志文件

问题描述 投票:0回答:1

因此,我已开始将ASP.NET Core 3.1 Web API与Serilog一起使用,如下所示:

public static void Main(string[] args)
{
    CreateHostBuilder(args).Build().Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>                
    Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>()
                  .UseSerilog((hostingContext, loggerConfiguration) =>
       loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration));
     });   

但是,创建了日志文件但没有写入任何内容,无论我在何处调用Log.Debug("Write this")之类的名称。我尝试使用不同的路径来避免任何形式的书面凭证问题,但无济于事。另外,尽管也设置了控制台日志,但我在Visual Studio的“输出”窗口中看不到任何内容。这是我在appSettings.json中写的内容:

"Serilog": {
"MinimumLevel": {
  "Default": "Debug"
},
"WriteTo": [      
  {
    "Name": "Console"
  },
  {
    "Name": "File",
    "Args": {
      "path": "log.txt",
      "rollingInterval": "Day",
      "retainedFileCountLimit": 7,
      "buffered": true
    }
  }
]
  },

我想念什么吗?

asp.net-core-webapi serilog
1个回答
0
投票

在上面的示例中,您是在应用程序开始时就写Serilog的,甚至还没有配置Serilog,因此您的消息就被丢弃了...

为了做您想做的事,您需要先设置Serilog。

按照Serilog.AspNetCore存储库中的EarlyInitializationSample,看它是如何完成的,看起来像这样:

EarlyInitializationSample

using System; using System.IO; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; namespace EarlyInitializationSample { public class Program { public static IConfiguration Configuration { get; } = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true) .AddEnvironmentVariables() .Build(); public static int Main(string[] args) { Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(Configuration) .Enrich.FromLogContext() .WriteTo.Debug() .WriteTo.Console( outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}") .CreateLogger(); try { Log.Information("Getting the motors running..."); CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) { Log.Fatal(ex, "Host terminated unexpectedly"); return 1; } finally { Log.CloseAndFlush(); } } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .UseSerilog(); } }

[当Serilog出现异常时,可能是内部异常或配置问题引起的。 Debugging and Diagnostics

© www.soinside.com 2019 - 2024. All rights reserved.