记录不输出任何东西
Logging not outputing anything
我正在尝试为 C# 控制台项目使用日志记录。每个在线资源似乎都适用于 asp.net 并使用 appsettings.json
,这是我的项目似乎没有的东西,所以我希望它与 asp.net 相关。我找到了一个使用以下示例进行记录的视频。
using Microsoft.Extensions.Logging;
namespace ConsoleTesting;
internal class Program
{
public static void Main()
{
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole();
});
var logger = loggerFactory.CreateLogger("Logger");
logger.LogCritical("Critical");
logger.LogDebug("Debug");
logger.LogInformation("Information");
Console.WriteLine("Hello World!");
}
}
但是除了 Hello World
之外,这不会在控制台中打印任何内容。
我认为问题是 timing/buffering 之一。如果你只是在末尾添加一个 Thread.Sleep(5000);
,我怀疑你会看到所有的输出。 (我在我的电脑上做。)
当然,您不想向您的真实代码添加 Thread.Sleep
调用 - 您真的想刷新所有记录器。
通过实验,处理 LoggerFactory
似乎是正确的。在您的简单示例中,只需将声明更改为 using
语句即可:
using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
LoggerFactory
将在方法结束时处理,这至少 似乎 刷新记录器。不过,我还没有文档来证明这是正确的做事方式。
我正在尝试为 C# 控制台项目使用日志记录。每个在线资源似乎都适用于 asp.net 并使用 appsettings.json
,这是我的项目似乎没有的东西,所以我希望它与 asp.net 相关。我找到了一个使用以下示例进行记录的视频。
using Microsoft.Extensions.Logging;
namespace ConsoleTesting;
internal class Program
{
public static void Main()
{
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole();
});
var logger = loggerFactory.CreateLogger("Logger");
logger.LogCritical("Critical");
logger.LogDebug("Debug");
logger.LogInformation("Information");
Console.WriteLine("Hello World!");
}
}
但是除了 Hello World
之外,这不会在控制台中打印任何内容。
我认为问题是 timing/buffering 之一。如果你只是在末尾添加一个 Thread.Sleep(5000);
,我怀疑你会看到所有的输出。 (我在我的电脑上做。)
当然,您不想向您的真实代码添加 Thread.Sleep
调用 - 您真的想刷新所有记录器。
通过实验,处理 LoggerFactory
似乎是正确的。在您的简单示例中,只需将声明更改为 using
语句即可:
using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
LoggerFactory
将在方法结束时处理,这至少 似乎 刷新记录器。不过,我还没有文档来证明这是正确的做事方式。