Asp.net

Microsoft.Extensions.Logging 如何適用於完整的 .net 框架?

  • February 21, 2017

文章(監控和診斷 Azure Service Fabric 應用程序)指出以下內容(請注意粗體文本):

ASP.NET Core 日誌記錄

選擇如何檢測您的程式碼可能很困難,如果您選擇不當並且必須重新檢測,您將重新審視並可能破壞您的程式碼庫。為降低風險,開發人員可以選擇諸如 ASP.NET Core 提供的 Microsoft.Extensions.Logging 之類的檢測庫。這提供了一個 ILogger 介面,允許使用您選擇的提供程序,同時最大限度地減少對現有程式碼的影響。另一個很好的方面是程式碼不僅可以在 Windows 和 Linux 上的 .NET Core 中使用,還可以在完整的 .NET 框架中使用,從而能夠跨 .NET 和 .NET Core 標準化您的檢測程式碼。

這應該如何工作,因為當我嘗試添加擴展庫(到編譯為 .net 框架 4.5.2 的服務結構集群應用程序項目中)時,它試圖關閉所有與 asp.net 核心相關的二進製文件?

這意味著“Microsoft.Extensions.Logging ”庫是針對netstandard (1.1) 編譯的,這意味著它可以被完整框架 (4.5+) 應用程序和 dotnet 核心應用程序使用。

添加 net 標準元包會引入一堆依賴項,但由於您的項目針對的是完整框架,因此您的服務實際上不會使用它們。

@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 包。

引用自:https://stackoverflow.com/questions/42356802