Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么每个人都使用带有ASP.NETCore ILogger的日志程序包?_C#_Asp.net Core_Logging - Fatal编程技术网

C# 为什么每个人都使用带有ASP.NETCore ILogger的日志程序包?

C# 为什么每个人都使用带有ASP.NETCore ILogger的日志程序包?,c#,asp.net-core,logging,C#,Asp.net Core,Logging,对于日志记录,开发人员使用诸如Nlog、SeriLog等日志记录包。。。 而asp.net核心具有Microsoft.Extenstions.Logging.ILogger asp.net核心记录日志的ILogger 如果ILogger可以记录日志,那么在没有任何其他包的情况下使用它不是更好吗? 如果ILogger可以记录日志,那么为什么开发人员不单独使用它呢 如果ILogger不能单独记录日志,而其他软件包可以记录日志,那么与其他日志软件包一起使用而不是单独使用一个日志软件包的ILogger的

对于日志记录,开发人员使用诸如Nlog、SeriLog等日志记录包。。。 而asp.net核心具有Microsoft.Extenstions.Logging.ILogger

asp.net核心记录日志的
ILogger

如果
ILogger
可以记录日志,那么在没有任何其他包的情况下使用它不是更好吗? 如果ILogger可以记录日志,那么为什么开发人员不单独使用它呢

如果
ILogger
不能单独记录日志,而其他软件包可以记录日志,那么与其他日志软件包一起使用而不是单独使用一个日志软件包的
ILogger
的好处是什么

.NET Core支持与各种内置和第三方日志提供商一起使用的日志API。本文展示了如何将日志API与内置提供程序一起使用


这为您提供了灵活性和附加功能。

默认情况下,ASP.NET核心使用Microsoft.Extensions.Logging.ILogger

因此,调用CreateDefaultBuilder,它将添加以下日志提供程序:

  • 控制台
  • 调试
  • 事件源
  • 事件日志:仅限Windows
代码示例:

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
                 {
                     webBuilder.UseStartup<Startup>();
                 });
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});
资料来源:

所以一般来说,每个项目都有自己的需求,所以开发人员可以选择哪个更适合项目需求。 其他记录器提供商,如Nlog、SeriLog、Asure等。。。 可以提供不同的日志主题、灵活的配置、登录到文件以及默认ASP.NET核心不具备的其他功能。 ILogger和ILogger Provider接口以及附加软件包的安装具有添加其他记录器提供程序的灵活性

iLogger提供程序接口


希望我的回答很好。

ILogger
只是一个界面。你可以使用框架自己的界面,但是你的应用程序会被这些界面“锁定”。也就是说,以后更改日志框架是一项艰巨的任务。如果您使用MS
ILogger
接口,您可以通过任何适合您需求的框架轻松地支持它,并在以后轻松地对其进行更改,因为您需要更改的只是依赖项注入配置中的一些行,并创建合适的记录器配置。例如,
ILogger
是围绕结构化日志设计的[
Log.LogDebug(“MyVar是{Something}”,MyVar)
vs
Log.LogDebug($“MyVar是{MyVar}”)
],它实际上并不在本地支持它(基本上执行字符串格式)。您可以使用一个支持结构化日志记录(如Serilog)的框架,并使用它来支持
ILogger
,而无需更改您正在编写代码的接口。感谢您的回答。那么asp.net core在没有任何包的情况下就不会使用本机日志记录程序?为此,我们可以使用日志记录包或编写自定义日志记录框架作业。我说的对吗?欢迎光临,AspNetCore提供了控制台日志,因此您可以确定您需要安装或编写自己的软件包。