如何在 .NET CORE 3 ASP.NET MVC 中不使用第三方记录器(serilog,elmah等)登录到文件?我在https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/上找不到此信息。
最佳答案
If ASP.NET Core 3 MVC doesn't have such built-in functionality the code of using third-party logging providers will be acceptable for me.
MS正式建议使用第三方文件记录器。
在asp.net core 3.0中使用Serilog也非常方便:
1.program.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>
4.在 Controller 中:
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
关于.net - 如何在不使用.Net Core 3 ASP.NET MVC中的第三方记录器的情况下登录文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58660412/