问题描述
我试图将.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();
在我的控制器类中,我照常做:
using Microsoft.Extensions.Logging;
private readonly ILogger _log;
public AuthorisationController(IConfiguration config,ISecurityService securityService,ILogger<AuthorisationController> log)
{
Configuration = config;
_securityService = securityService;
_log = log;
}
_log.Log@R_643_4045@ion("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与Logging扩展集成在一起,有些与通用主机配合使用,有些添加了特定于ASP.NET Core的扩展。
一种选择是使用Serilog.AspNetCore。创建记录器后,可以将其与主机构建器一起使用:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog() // <-- Add this line
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
这将为应用程序和主机构建过程使用静态记录器