Microsoft.Extensions.Logging如何为完整的.net框架工作?

Rag*_*ghu 11 .net asp.net azure azure-diagnostics azure-service-fabric

文章(监视和诊断Azure Service Fabric应用程序)表示以下内容(请注意粗体文本):

ASP.NET核心日志记录

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

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

Mor*_*ard 11

@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");

    }
}
Run Code Online (Sandbox Code Playgroud)

需要Microsoft.Extensions.Logging和Serilog.Extentions.Logging NuGet包.

  • CreateLogger&lt;T&gt; 是一个扩展方法。如果您不将 Microsoft.Extensions.Logging 导入到类文件中,您将只会看到 CreateLogger(string)。 (3认同)
  • 调试?:) :) (2认同)

小智 7

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

添加网络标准元数据包会引入很多依赖关系,但是由于您的项目针对的是完整框架,因此它们实际上不会被您的服务使用。

  • 从Microsoft.Extensions.Logging的2.0版本开始,它是基于Netstandard 2.0构建的,这意味着仅支持Framework 4.6.1及更高版本。如果您无法更新到该版本,并且必须保持在4.5.2上,那么您将无法使用Logging软件包的1.x版本。 (6认同)