Microsoft.Extensions.Logging 如何适用于完整的 .net 框架?

How does Microsoft.Extensions.Logging work for full .net framework?

文章 (Monitor and diagnose Azure Service Fabric applications) 表示如下(请注意粗体文本):

ASP.NET 核心日志记录

选择如何检测您的代码可能很困难,如果您选择不当并且必须重新检测,您正在重新访问并可能破坏您的代码库。为了降低风险,开发者可以选择 ASP.NET Core 提供的 Microsoft.Extensions.Logging 等检测库。这提供了一个 ILogger 接口,允许使用您选择的提供程序,同时最大限度地减少对现有代码的影响。另一个好的方面是代码不仅可以在 Windows 和 Linux 上的 .NET Core 中使用,而且还可以在 完整的 .NET 框架 中使用,提供跨 .NET 和 .NET Core 标准化检测代码的能力。

这应该如何工作,因为当我尝试添加扩展库(添加到我编译为 .net Framework 4.5.2 的服务结构集群应用程序项目)时,它试图关闭所有 asp.net 核心相关的二进制文件?

这意味着库 'Microsoft.Extensions.Logging' is compiled against netstandard (1.1),这意味着它可以被完整框架 (4.5+) 应用程序和 dotnet 核心应用程序使用。

添加 net 标准元包引入了一堆 dependencies,但由于您的项目以完整框架为目标,因此您的服务实际上不会使用它们。

@LoekD 的回答完全正确。下面是一个 .NET Framework 示例,说明如何将 Microsoft Extentions Logging 框架与 Serilog 一起使用。

public class Program
{
    private static void Main()
    {
        // instantiate and configure logging. Using serilog here, to log to console and a text-file.
        var loggerFactory = new Microsoft.Extensions.Logging.LoggerFactory();
        var loggerConfig = new LoggerConfiguration()
            .WriteTo.Console()
            .WriteTo.File("logs\myapp.txt", rollingInterval: RollingInterval.Day)
            .CreateLogger();
        loggerFactory.AddSerilog(loggerConfig);

        // create logger and put it to work.
        var logProvider = loggerFactory.CreateLogger<Program>();
        logProvider.LogDebug("debiggung");

    }
}

需要 Microsoft.Extensions.Logging、Serilog.Extensions.Logging 和 Serilog.Sinks.File NuGet 包。