我升级到.NET Core 2.0(+ASP.NET Core 2.0)后,似乎无法输出Trace级别的日志信息。
事实上,如果我在Startup的Configure方法中添加下面的代码,我将无法获得任何Trace或Debug日志消息,但我会获得Information和Error消息两次。注释掉.AddConsole()
调用将仅输出这些(Information和Error)一次 - 这表明它默认情况下已使用控制台提供程序进行配置。请记住,这是一个“新建项目”体验,对于此项目而言,在Program.cs
中没有为日志记录或配置设置 - 除了我添加的内容。有人看到过这种情况吗?还是我应该在GitHub上注册一个问题。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Microsoft.Extensions.Logging.LogLevel.Trace);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.Run(async (context) =>
{
var logger = loggerFactory.CreateLogger("Blah");
logger.LogTrace("Hello world : Trace");
logger.LogDebug("Hello world : Debug");
logger.LogInformation("Hello world : Information");
logger.LogError("Hello world : Error");
await context.Response.WriteAsync("Hello World!");
});
}
set ASPNETCORE_ENVIRONMENT=Development; dotnet run
命令来切换到开发环境并运行应用程序。 - Martin Ullrichawait Task.Delay(1)
可以使控制台显示日志。如果不加,控制台上只会显示部分日志。被接受的答案实际上没有起到任何作用。这似乎是一个线程问题。 - bloudraak