Dot-Net
如何在.Net Core 3 ASP.NET MVC 中不使用第三方記錄器登錄到文件?
如何在.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>
- 在控制器中:
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 文件。