通过.NET Core中的配置文件配置日志记录

时间:2020-01-13 08:00:43

标签: asp.net-core logging .net-core

我们正尝试通过配置文件(默认为appsettings.json)为ASP.NET Core应用程序配置日志记录。文档表示应该可以(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1),但我们无法使其按预期工作。

到目前为止我们尝试过的事情:

  • 将代码保留在ASP.NET Core项目模板中,仅更改appsettings.json =>无效
  • 明确添加appsettings.json作为配置文件,并在Program.cs中配置日志记录=>完全没有日志记录
 view?.viewTreeObserver?.addOnGlobalLayoutListener {
     val rect = Rect()
     view?.getWindowVisibleDisplayFrame(rect)
     val screenHeight = view?.rootView?.height
     val keypadHeight = screenHeight?.minus(rect.bottom) ?: return

     if (keypadHeight > screenHeight * KEYBOARD_MINIMUM_HEIGHT_PERCENTAGE) {
         //keyboard is shown do what ever you like
                
     } else {
        //keyboard is hidden
     }
}
  • ...在Startup.ConfigureServices中配置日志记录=>无效
    public static IHostBuilder CreateHostBuilder (string[] args) =>
        Host.CreateDefaultBuilder (args)
            .ConfigureAppConfiguration ((hostingContext, config) =>
            {
              config.Sources.Clear ();

              var env = hostingContext.HostingEnvironment;

              config.AddJsonFile ("appsettings.json", optional: false, reloadOnChange: true)
                    .AddJsonFile ($"appsettings.{env.EnvironmentName}.json",
                        optional: true, reloadOnChange: true);

              config.AddEnvironmentVariables ();
            })
            .ConfigureLogging ((hostingContext, logging) =>
            {
              logging.ClearProviders ();

              logging.AddConfiguration (hostingContext.Configuration.GetSection ("Logging"));
            })
            .ConfigureWebHostDefaults (webBuilder =>
             {
               webBuilder.UseStartup<Startup> ();
             });

1 个答案:

答案 0 :(得分:2)

您误会了。您可以配置日志记录,即每个提供程序的日志级别,过滤消息等,但是实际的提供程序必须在代码中分配。换句话说,您可以通过config配置将哪些消息发送到控制台,但是您仍然必须在logging.AddConsole()中调用ConfigureLogging来添加该提供程序。

您拥有的代码会清除所有默认提供程序,并且不添加任何内容,因此根本没有提供程序,因此不会生成任何日志。您实际上不能通过config添加提供程序,只需配置已添加的提供程序即可。