2017-08-17 57 views
0

在我们的生产环境中,我们有一个负载平衡的.net核心Web服务,因此负载平衡器每秒调用一次特殊/健康URL来检查服务是否仍然运行。当日志级别设置为Info时,由于这些重复调用,日志文件会很快填满。看到有问题的日志来自.net核心框架,我看不出如何滤除这些请求而不会过滤出所有请求。这种类型的请求日志的例子是:.net核心日志过滤某些请求

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] 
     Request starting HTTP/1.1 GET http://localhost:5555/Health 
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] 
     Request finished in 1674.6082ms 200 

任何想法如何我们可以过滤掉这些,而不会过滤出所有其他请求?

回答

0

是的,您可以设置最低级别的日志记录,它只会记录此级别和更高级别的事件。日志级别的优先级是:

  • 跟踪
  • 调试
  • 信息
  • 警告
  • 错误
  • 关键

我个人使用Error水平,仅记录错误和关键问题我这样做:

Log.Logger = new LoggerConfiguration() 
       .MinimumLevel.Error() // <--- this sets the minimum level 
       .WriteTo.RollingFile(new JsonFormatter(renderMessage: true), 
        Path.Combine(env.ContentRootPath, "myLog.txt")) 
       .CreateLogger(); 
0

另一种选择是只筛选特定类别。

appsettings.json:

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "Debug": { 
     "LogLevel": { 
     "Default": "Warning" 
     } 
    }, 
    "Console": { 
     "LogLevel": { 
     "Microsoft.AspNetCore.Hosting.Internal.WebHost": "Warning", 
     "Default": "Info" 
     } 
    } 
    } 
} 

还有更精彩的信息在the docs,看 “日志过滤” 部分。