【问题标题】:Serilog does not log to file after exception has occured发生异常后 Serilog 不记录到文件
【发布时间】:2020-06-11 15:26:10
【问题描述】:

我在我的 .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);
            });

【问题讨论】:

  • 是的。我尝试添加异常丰富器,但没有帮助。不过感谢您的指点。 @法国人
  • 文件权限问题?每次都是同一个用户ID吗?一般来说,您不想像那样登录到随机根文件夹 - 我怀疑这是特定于 Serilog 的问题?
  • 它完美运行,直到我遇到异常而没有任何更改。就像 SQL Server 离线一样。所以我猜这不应该是权限问题。

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


【解决方案1】:

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

"fileSizeLimitBytes": 5000,

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

"rollOnFileSizeLimit": true

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

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多