4
我有一個簡單的測試項目,用NetCore 2.0使用Microsoft Logging Extensions軟件包進行記錄實驗。netcore未記錄到控制檯
我遇到的問題是,當我第一次運行我的應用程序時,它會按預期記錄信息性消息。我遇到的奇怪行爲是後續運行不會產生任何消息。
我的項目目標的網絡核心2.0框架,並已安裝了以下的NuGet包:
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Logging .Console
- Microsoft.Extensions.Logging.Debug
下面是我的示例代碼,我試圖讓日誌工作:
using System;
namespace LoggingNetCore2
{
using Microsoft.Extensions.Logging;
class Program
{
static void Main(string[] args)
{
var loggerFactory = new LoggerFactory();
loggerFactory.AddConsole();
loggerFactory.AddDebug(); // <-- why is this needed for console logging?
var logger = loggerFactory.CreateLogger(typeof(Program));
logger.LogInformation("Hello, World!");
logger.LogTrace("trace");
logger.LogDebug("debug");
logger.LogWarning("warning");
logger.LogCritical("critical");
logger.LogError("errrrr");
//using (logger.BeginScope("MyMessages"))
//{
// logger.LogInformation("Beginning Operation...");
// logger.LogInformation("Doing something cool... please wait.");
// logger.LogInformation("Completed successfully.");
//}
}
}
}
當我運行上述操作時,在控制檯窗口上沒有輸出。任何想到可能會發生什麼的想法?
事情我已經嘗試:
- 添加了Microsoft.Extensions.Logging.Abstractions包,因爲我依稀記得需要做的是在1.0磊科應用了過去。
- 卸載/重新安裝上述軟件包。
- 我甚至嘗試通過dotnet.exe命令從命令行運行應用程序,但無濟於事。
- 如果我降級到NetCore框架1.1(和NuGet包到1.1版本),事情按預期工作。
編輯:我現在的日誌顯示在控制檯窗口中,如果我添加了調試日誌提供進入組合。
在NetCore 1.x應用程序中,只需添加控制檯提供程序就足夠了。
編輯#2:事實證明,控制檯日誌記錄提供程序不會像在net-core-1.x版本中那樣立即將消息刷新到控制檯。它似乎在不同的線程上運行。看到這個網頁的信息:https://github.com/aspnet/Logging/issues/631