【问题标题】:How does Microsoft.Extensions.Logging work for full .net framework?Microsoft.Extensions.Logging 如何适用于完整的 .net 框架?
【发布时间】:2017-07-10 10:54:58
【问题描述】:

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

ASP.NET Core 日志记录

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

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

【问题讨论】:

  • 推荐的解决方案不起作用 - 至少对于最新的软件包版本。很抱歉将此作为答案发布,我没有足够的“信誉”来添加评论。随意删除此答案,但请注意,此解决方案不起作用,并且开发人员在日志记录工作方式方面缺乏文档、理解和帮助。

标签: asp.net .net azure logging azure-diagnostics


【解决方案1】:

这意味着库 'Microsoft.Extensions.Logging' 是针对 netstandard (1.1) 编译的,这意味着它可以被完整框架 (4.5+) 应用程序和 dotnet 核心应用程序使用。

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

【讨论】:

  • 自Microsoft.Extensions.Logging 2.0 以来,它建立在Netstandard 2.0 之上,这意味着仅支持Framework 4.6.1 及更高版本。如果您无法更新到该版本,并且必须继续使用 4.5.2,那么您将无法使用 1.x 版本的 Logging 包。
【解决方案2】:

@LoekD 的回答绝对正确。这是一个 .NET Framework 示例,说明如何将 Microsoft 扩展日志框架与 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 包。

【讨论】:

  • 包括了你提到的 Nuget 包并且不能让它工作,它似乎没有找到 LoggerConfiguration 类。我正在尝试在 .NET Framework 4.6.1 项目中使用它
  • @GabrielPiffaretti LoggerConfiguration 类在 Serilog 命名空间中——你是否包含了这个 Nuget 包? nuget.org/packages/Serilog/2.7.1.
  • debiggung? :) :)
  • @DaveJellison 故意的,我发誓 :)
  • CreateLogger 是一种扩展方法。如果你不将 Microsoft.Extensions.Logging 导入你的类文件,你只会看到 CreateLogger(string)。
猜你喜欢
  • 1970-01-01
  • 2020-03-08
  • 2017-07-16
  • 1970-01-01
  • 2018-10-19
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多