帮忙解释一下appsettings.json中部分字段的含义

2019-06-05 10:25发布

问题:

我的:

  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
.......

别人的:

"Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
"AllowedHosts": "*",
.........

前提:这个是基于netcore框架的api项目,项目中使用了swagger

  1. 这个"IncludeScopes": false是关闭了什么功能呢(搜索无果...)
  2. Debug和Console应该是一个二挑一的,但具体什么含义没搞清楚,求科普

回答1:

  1. "IncludeScopes": false 表示不记录日志的 scope 信息, 如果设置为 true , 对于 DeveloperExceptionPageMiddleware ,会在日志中记录 ConnectionId, RequestId, RequestPath ,比如
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      => ConnectionId:0HLKMD2S8UMMD => RequestId:0HLKMD2S8UMMD:00000001 RequestPath:/
      An unhandled exception has occurred while executing the request.

推荐阅读:How to include scopes when logging exceptions in ASP.NET Core

  1. DebugConsole 不是二挑一,是并肩作战,日志同时输出到 Debug (VS调试窗口)与 Console(命令行控制台)


回答2:

IncludeScopes:
using(logget.beginscope("aaaa")){
logger.info("info")
}
大概输出: classname info. =>aaaa.
可以启用后,你访问api的日志。就有类似
*** => /requestpath
可以让你的日志有层次结构

Debug,Console section
这是针对这2个logger的provider的单独配置。
比如我可以console 输出所有日志 loglevel:trace,可以在debug你们只输出info级别以上。
还可以有其他的provider,比如eventlog,nlog,等之类的。