首页 > 解决方案 > 发生异常后 Serilog 不记录到文件

问题描述

我在我的 .Net core 3.1 CONSOLE 项目中使用 serilog。它通常工作得很好,但如果有任何异常,它会记录异常,然后停止记录该应用程序的所有后续运行。我需要删除日志文件,它会重新开始工作。

不知道我做错了什么或遗漏了什么。请帮忙。

这是serilog配置。

"Serilog": {
"WriteTo": [
  {
    "Name": "File",
    "Args": {
      "path": "C:\\Logs\\MyLogs.log",
      "rollingInterval": "Day",
      "fileSizeLimitBytes": 5000,
      "rollOnFileSizeLimit": true
    }
  }
]  }

这是我在通用主机中使用它的方式

 return Host.CreateDefaultBuilder()
            .ConfigureServices(( hostContext,services ) =>
            {

               ...
            })
            .ConfigureAppConfiguration(config =>
            {
                config.SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("AppConfigs.json");
            })
            .UseSerilog(( context,builder ) =>
            {
                builder
                    .ReadFrom.Configuration(context.Configuration);
            });

标签: c#.net-coreserilog.net-core-3.1

解决方案


这对我来说是一个愚蠢的错误。问题是

"fileSizeLimitBytes": 5000,

这是 5 kb。异常文本要大得多,这导致它超出了限制。和

"rollOnFileSizeLimit": true

没有工作,因为我忘记添加 Serilog.Sink.File 包。一旦我添加了它并更改了限制,一切都很好。感谢您的回复。


推荐阅读