我们正在尝试通过配置文件(默认的appsettings.json(为我们的 ASP.NET Core应用程序配置日志记录。文档说这应该是可能的(https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1(,但我们不能让它像预期的那样工作。
到目前为止,我们尝试过:
- 将代码保留在 ASP.NET Core的项目模板中,只需更改appsettings.json =>不起作用
- 显式添加 appsettings.json 作为配置文件并在程序中配置日志记录.cs => 根本没有日志记录
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> ();
});
- 。在启动中配置日志记录。配置服务 => 不起作用
public void ConfigureServices (IServiceCollection services)
{
services.AddLogging (config => config.AddConfiguration (Configuration.GetSection("Logging")));
services.AddControllers ();
}
你误会了。您可以配置日志记录,即每个提供程序的级别.log过滤掉消息等,但必须在代码中分配实际提供程序。换句话说,您可以通过配置配置哪些消息进入控制台,但仍必须在ConfigureLogging
中调用logging.AddConsole()
以添加该提供程序。
您拥有的代码会清除所有默认提供程序,并且不添加任何内容,因此根本没有提供程序,因此不会生成日志。您实际上无法通过配置添加提供程序,只需配置已添加的提供程序即可。