我'm trying to determine if it'可以在 appsettings.json
文件中为ASP.Net Core 2项目配置serilog sink mssqlserver的列选项 .
我在 Program.cs
文件中创建并配置 Logger .
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
.AddEnvironmentVariables()
.Build();
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
//.Enrich.WithProperty("AppName", "One Badass App") // Adds property to XML structure in properties column
.ReadFrom.Configuration(Configuration)
.CreateLogger();
try
{
Log.Information("Starting web host");
BuildWebHost(args).Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
我可以从appsettings.json文件构建配置文件,该文件包含一个Serilog节点,其中包含要使用的连接字符串和表的信息 .
{
"AppSettings": {
"Application": {
"Name": "Payment Processing API",
"Version": "1.0"
}
},
"ConnectionStrings": {
"localPaymentProcessingDb": "Server=(localdb)\\mssqllocaldb;Database=PaymentProcessing;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Serilog": {
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=(localdb)\\mssqllocaldb;Database=PaymentProcessing;Trusted_Connection=True;MultipleActiveResultSets=true",
"tableName": "Logs"
}
}
]
}
Github上有一个未解决的问题,但我没有找到任何其他相关信息 .
如果无法在 appsettings.json
中配置列选项,那么在ASP.Net Core 2项目中应该在何处以及如何配置它们?
1 回答
要从Code中的appsettings访问Serilog,您可以将Serilog节点绑定到Serilog类 .
以下是详细步骤 .
1.创建Serilog配置类
码: