我想在我的ASP.NET Core应用程序中使用Serilog记录到文件。我已经安装了软件包Serilog.AspNetCore
(它与Serilog.Settings.Configuration
和Serilog.Sinks.File
有依赖性,所以我想我不需要任何其他软件包)。
我的目标是像这样实现登录我的控制器:
...
private ILogger _log;
public MyController(ILogger<MyController> logger)
{
_log = logger;
}
...
public ActionResult<MyResponse> Foo([FromRoute] Guid fooGuid)
{
_log.LogError("error test");
}
在我的appsettings.json
中,我具有以下配置:
"Serilog": {
"Using": [],
"MinimumLevel": "Information",
"WriteTo": [
{ "Name": "Console" },
{
"Name": "File",
"Args": {
"patch": "D:\\Log\\log.log"
}
}
],
"Application": "Centralized logging application"
},
"AllowedHosts": "*"
我的Program.cs
看起来像这样:
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders();
logging.AddSerilog().AddConfiguration(context.Configuration);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
我认为问题出在Program.cs
文件中。如何实现这种记录到文件的最简单方法是什么?谢谢。
答案 0 :(得分:1)
"path": "D:\\Log\\log.log"
您的CreateHostBuilder
方法应包括:
Host.CreateDefaultBuilder(args)
.UseSerilog()
您的Main
方法应包括
// reading from appsettings.json the logging settings
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();