ASP.NET Core - Serilog 默认为记录器
ASP.NET Core - Serilog in default the logger
我想在我的 ASP.NET 核心应用程序中使用 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
文件中。如何实现这种登录到文件的最简单方法是什么?谢谢。
- 您的 appsettings.json 有错字。它应该说明
"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();
我想在我的 ASP.NET 核心应用程序中使用 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
文件中。如何实现这种登录到文件的最简单方法是什么?谢谢。
- 您的 appsettings.json 有错字。它应该说明
"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();