netcore没有登录到控制台

时间:2017-09-13 01:03:43

标签: logging ms-extensions-logging .net-core-2.0

我有一个简单的测试项目,可以使用Microsoft Logging Extensions包来试验使用NetCore 2.0进行日志记录。

我遇到的问题是,当我第一次运行我的应用程序时,它会按预期记录信息性消息。我所经历的奇怪行为是后续的运行根本不会产生任何消息。

我的项目面向Net Core 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 包,因为我依旧记得过去需要在NetCore 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

1 个答案:

答案 0 :(得分:3)

@ ajawad987,你是对的。 vshr.u64 qres, qres, #31 vsli.64 dres_bot, dres_top, #2 // the four LSBs already contain the bitmap, the rest is optional: vbic.i16 dres_bot, #0xf0 // you can now use byte 0 of dres_bot as the result. 有效。

Dispose()