Serilog依赖注入
Serilog dependency injection
我正在尝试将 Serilog 依赖注入到我在 .Net Core 3.1 中的 WebAPI 项目中的所有项目中。
在我的 startup.cs 中,我正在设置 serilog,但可能不正确:
我有:
using Serilog;
然后在:
public void ConfigureServices(IServiceCollection services)
,我有:
services.AddSingleton(Log.Logger);
我还有:
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
这个,在我的控制器中 class,我做通常的事情:
using Microsoft.Extensions.Logging;
private readonly ILogger _log;
public AuthorisationController(IConfiguration config, ISecurityService securityService, ILogger<AuthorisationController> log)
{
Configuration = config;
_securityService = securityService;
_log = log;
}
Config 和 SecurityService 正常。
但是在我的第一种方法中,我尝试记录:
_log.LogInformation("Login attempt");
但我的日志中没有任何内容。
谁能找出错误?
这不重要,但我的应用程序设置是这样的:
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "===> {Timestamp:HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"
}
},
{
"Name": "Loggly",
"Args": {
"customerToken": "MySuperSecretKey"
}
}
]
}```
您还没有发布任何日志记录配置代码,所以我认为它丢失了。有几个将 Serilog 与日志扩展集成的包,一些与通用主机一起工作,一些添加特定于 ASP.NET Core 的扩展。
一种选择是使用 Serilog.AspNetCore。创建记录器后,您可以将其与主机构建器本身一起使用:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog() // <-- Add this line
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
这将为应用程序和主机构建过程
使用静态记录器
我正在尝试将 Serilog 依赖注入到我在 .Net Core 3.1 中的 WebAPI 项目中的所有项目中。
在我的 startup.cs 中,我正在设置 serilog,但可能不正确:
我有:
using Serilog;
然后在:
public void ConfigureServices(IServiceCollection services)
,我有:
services.AddSingleton(Log.Logger);
我还有:
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
这个,在我的控制器中 class,我做通常的事情:
using Microsoft.Extensions.Logging;
private readonly ILogger _log;
public AuthorisationController(IConfiguration config, ISecurityService securityService, ILogger<AuthorisationController> log)
{
Configuration = config;
_securityService = securityService;
_log = log;
}
Config 和 SecurityService 正常。
但是在我的第一种方法中,我尝试记录:
_log.LogInformation("Login attempt");
但我的日志中没有任何内容。
谁能找出错误?
这不重要,但我的应用程序设置是这样的:
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "===> {Timestamp:HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"
}
},
{
"Name": "Loggly",
"Args": {
"customerToken": "MySuperSecretKey"
}
}
]
}```
您还没有发布任何日志记录配置代码,所以我认为它丢失了。有几个将 Serilog 与日志扩展集成的包,一些与通用主机一起工作,一些添加特定于 ASP.NET Core 的扩展。
一种选择是使用 Serilog.AspNetCore。创建记录器后,您可以将其与主机构建器本身一起使用:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog() // <-- Add this line
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
这将为应用程序和主机构建过程
使用静态记录器