c# - .Net Core 控制台应用程序日志记录功能 - 为什么我的 Console.WriteLine 出现在开始和结束日志记录之外?
问题描述
在控制台应用程序中找到有关 .Net Core 日志记录的这篇文章。
它似乎有效,但我不知道为什么我的 Console.WriteLine("Doing stuff"); 出现在开始和结束日志消息之外。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var services = new ServiceCollection();
ConfigureServices(services);
using (ServiceProvider serviceProvider = services.BuildServiceProvider())
{
MyApplication app = serviceProvider.GetService<MyApplication>();
// Start up logic here
app.Run();
}
}
private static void ConfigureServices(ServiceCollection services)
{
services.AddLogging(configure => configure.AddConsole())
.AddTransient<MyApplication>();
}
}
public class MyApplication
{
private readonly ILogger _logger;
public MyApplication(ILogger<MyApplication> logger)
{
_logger = logger;
}
internal void Run()
{
_logger.LogInformation("Application Started at {dateTime}", DateTime.UtcNow);
//Business Logic START
Console.WriteLine("Doing stuff");
//Business logic END
_logger.LogInformation("Application Ended at {dateTime}", DateTime.UtcNow);
}
}
}
解决方案
因为ConsoleLogger类在Microsoft.Extensions.Logging.Console
排队消息。
它最终由内部记录器处理器在后台线程上处理并打印到控制台。
Console.WriteLine
直接写入控制台。
推荐阅读
- unix - 在 UNIX 脚本中使用模式拆分文件
- python - 预测函数返回指数值
- javascript - 从网页结果中提取 URL 并在 iframe 中显示 URL
- typo3 - TYPO3 向页面属性添加新标签
- python - 我在将 Tensorflow - gpu 安装到我的 anaconda 虚拟环境中时遇到问题
- powershell - In a powershell DSC resource declaration, what syntactical element is the declaration?
- xampp - CSS 更改不会显示在 xampp 上,但会在上传到域时显示
- echarts - 自定义颜色gridLine echarts
- spring - RouterFunction 无法注入处理程序 bean
- r - 在 R 中使用 rlist:merge.list 不起作用