Dot-Net

如何在.Net Core 3 ASP.NET MVC 中不使用第三方記錄器登錄到文件?

  • April 2, 2020

如何在.NET CORE 3 ASP.NET MVC中不使用第三方記錄器(serilog、elmah 等)登錄文件?我沒有在https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/上找到此資訊。

如果 ASP.NET Core 3 MVC 沒有這樣的內置功能,那麼我可以接受使用第三方日誌記錄提供程序的程式碼。

MS 官方建議使用 3rd 方文件記錄器。

在asp.net core 3.0中使用Serilog也很方便:

1.程序.cs

public static IHostBuilder CreateHostBuilder(string[] args) =>
       Host.CreateDefaultBuilder(args)
           .UseSerilog((ctx, config) => { config.ReadFrom.Configuration(ctx.Configuration); })
           .ConfigureWebHostDefaults(webBuilder =>
           {
               webBuilder.UseStartup<Startup>();
           });

2.appsettings.json

"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],

"WriteTo": [
 { "Name": "Console" },
 { "Name": "Debug" },
 {
   "Name": "File",
   "Args": {
     "path": "log-{Date}.txt",
     "rollingInterval": "Day",
     "shared": true
   }
 }
],
"Properties": {
 "Application": "SampleApp"
}
}

3.使用以下 NuGet 包

<ItemGroup>    
   <PackageReference Include="Serilog.AspNetCore" Version="3.0.0" />
   <PackageReference Include="Serilog.Settings.Configuration" Version="3.1.1-dev-00209" />
   <PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />  
</ItemGroup>
  1. 在控制器中:
public class HomeController : Controller
{
   private readonly ILogger<HomeController> _logger;

   public HomeController(ILogger<HomeController> logger)
   {
       _logger = logger;
   }

   public async Task Index()
   {
       _logger.LogInformation("Hello, World!");
   }
}

然後您可以檢查項目中存在的 txt 文件。

參考https://github.com/serilog/serilog-sinks-file

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