【问题标题】:Why isn't Serilog writing Debug messages even when the level is set to Debug?为什么即使级别设置为调试,Serilog 也不写入调试消息?
【发布时间】:2018-01-10 21:59:21
【问题描述】:

我编写了以下行以在 C#/WPF 应用程序中创建我的记录器,但调试消息未显示在日志中。我错过了什么?我正在使用 serilog.sinks.file 版本 4.0.0。发布版本产生信息级事件,但调试版本不产生调试消息。我已确认已定义 DEBUG 符号,并且已调试以确认该级别实际上已设置为调试。

LogEventLevel level = LogEventLevel.Information;
#if DEBUG
            level = LogEventLevel.Debug;
#endif
            UsageLogger = new LoggerConfiguration()
               .Enrich.With(new ThreadIdEnricher())
               .WriteTo.File("UsageLogging.txt", restrictedToMinimumLevel: level, outputTemplate: LogTemplate, rollingInterval: RollingInterval.Day)
               .Enrich.With(new ThreadIdEnricher())
               .WriteTo.Console(restrictedToMinimumLevel: level, outputTemplate: LogTemplate)
               .Enrich.With(new ThreadIdEnricher())
                .CreateLogger();
        }

【问题讨论】:

    标签: c# wpf serilog


    【解决方案1】:

    我觉得应该是这样的……

    LogEventLevel level = LogEventLevel.Information;
    #if DEBUG
                level = LogEventLevel.Debug;
    #endif
    
            UsageLogger = new LoggerConfiguration()
        #if DEBUG
        .MinimumLevel.Debug()
        #endif
               .Enrich.With(new ThreadIdEnricher())
               .WriteTo.File("UsageLogging.txt", restrictedToMinimumLevel: level, outputTemplate: LogTemplate, rollingInterval: RollingInterval.Day)
               .Enrich.With(new ThreadIdEnricher())
               .WriteTo.Console(restrictedToMinimumLevel: level, outputTemplate: LogTemplate)
               .Enrich.With(new ThreadIdEnricher())
                .CreateLogger();
    

    【讨论】:

    • 谢谢。我认为每个上的 restrictedToMinimumLevel 就足以做到这一点,但另一个函数调用对于设置配置的整体级别是必要的。我误解了文档。
    • MinimumLevel.Is(level) 也会这样做;您也不需要在这里指定restrictedToMinimumLevel - HTH :-)
    • 谢谢。我与 MSSqlServer 的编写器有这个问题。答案中的关键是记录器级别的“.MinimumLevel.Debug()”以及接收器级别的restrictedToMinimumLevel。我的接收器设置了restrictedToMinimumLevel,但没有在记录器级别设置“.MinimumLevel.Debug()”。结果它没有工作。显然,每个接收器作者都继承了该值?我发现这个文档非常有用:github.com/serilog/serilog/wiki/…
    • 就我而言,阅读这些答案后我花了一段时间才意识到。添加MinimumLevel!之后!写给。因为这就是它所适用的。当它在记录器 Verbose 之前仅记录 Verbose 数据但仍处于默认日志级别 INFO 时!哦,男人花了很长时间才这样做
    【解决方案2】:

    我的是一个 asp.net core 2.0 项目,从 appsetting.Development.json 文件中读取配置

    在 Startup.cs 文件中,首先需要按如下方式创建记录器。

    var seriLogger = new LoggerConfiguration()
        .MinimumLevel.Verbose()
        .ReadFrom.Configuration(configuration)    
        .CreateLogger();
    

    这里重要的是要注意最低级别设置为详细。注意

    .MinimumLevel.Verbose()
    

    接下来 appsettings.Developement.json 将如下所示。

    {
      "ConnectionStrings": {
      "HPlusSportsConnection": "Data Source=DESKTOP-Feast\\sqlexpress;Initial Catalog=H_Plus_Sports;Persist Security Info=True;User ID=fakeUserId;Password=fakePassword"
    },
    "Serilog": {
    "WriteTo": [
      {
        "Name": "Seq",
        "Args": {
          "restrictedToMinimumLevel": "Debug",
          "serverUrl": "http://localhost:5341"
        }
      },
      {
        "Name": "File",
        "Args": {
          "restrictedToMinimumLevel": "Verbose",
          "path": "log.txt",
          "outputTemplate": "Will be logged {Timestamp:yyyy-MMM-dd HH:mm:ss}|{TenantName}|{RequestId}|{SourceContext}|{Level:u3}|{Message:lj}{NewLine}{Exception}",
          "rollingInterval": "Day"
        }
      }
    ]},}
    

    所以我有多个接收器,每个接收器都有自己的级别。 sink Seq 有 Debug,所以 debug 及以上将被记录到 seq sink。对于文本文件,级别是 Verbose,实际上所有内容都会被记录。

    再次强调,

    .MinimumLevel.Verbose()
    

    在这里很重要。如果您忽略或注释掉它,那么即使您将它们配置为详细或调试,file 和 seq 也只会包含来自信息及以上的日志。那是因为默认情况下最低级别是“信息”。

    【讨论】:

    • 为了使其更加可配置,可以在“WriteTo”行上方添加“MinimumLevel”:“Verbose”
    【解决方案3】:

    在 appsettings 中将 Defaultinformation 更改为 debug 像这样:

    "Logging": {
    "MinimumLevel": {
          "Default": "Debug",
          "Override": {
            "Microsoft": "Warning",
            "System": "Warning"
          }
    }
    

    【讨论】:

    • 点赞!有用!谢谢! :)
    猜你喜欢
    • 2021-04-02
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多