[英]Map ILogger to Serilog's Logger after ASP.NET Core 2 logging update
[英]ASP.NET Core - Serilog in default the logger
我想在我的 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
文件中。 如何实现这种登录到文件的最简单方法是什么? 谢谢。
"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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.