我正在构建一个 .Net Core 3.1 控制台应用程序,希望使用内置的控制台日志记录功能。有很多关于 .net 日志记录的文章,但我找不到一个实际在控制台中写入日志的示例。
namespace test
{
class Program
{
static void Main(string[] args)
{
var serviceProvider = new ServiceCollection()
.AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
.BuildServiceProvider();
//configure console logging
serviceProvider
.GetService<ILoggerFactory>();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();
logger.LogDebug("All done!");
Console.Write("Yup");
}
}
它可以编译和运行,甚至在控制台写入了“Yup”,但是“全部完成!”未显示。 控制台窗口输出: 这是我的示例项目结构: 我错过了什么吗?
这是服务的dispose:修复感谢Jeremy Lakeman:
static void Main(string[] args)
{
using (var serviceProvider = new ServiceCollection()
.AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
.BuildServiceProvider())
{
//configure console logging
serviceProvider
.GetService<ILoggerFactory>();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();
// run app logic
logger.LogDebug("All done!");
}
Console.Write("Yup");
}
IServiceProvider
的实现应该是IDisposable
。 - Jeremy Lakeman