gpt4 book ai didi

c# - Asp.Net Core 2.1 的 Serilog 不从 appsettings.json 写入

转载 作者:行者123 更新时间:2023-11-30 21:30:37 25 4
gpt4 key购买 nike

我正在尝试配置 Serilog 以从我的 ASP.NET Core 2 WebApi 中的 appsettings.json 文件中读取我的设置。

我在 appsetting.json 文件的根目录中有以下内容;

"Serilog": {
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": { "pathFormat": "Logs\\Serilog\\log.txt" },
"RollingInterval": "Day"
},
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "myconnectionstring",
"schemaName": "Schema",
"tableName": "Logs",
"batchPostingLimit": 1000,
"period": 30
}
}
]
}
}
]
}

在我的 Startup.cs 中,我有以下内容;

    public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var log = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.CreateLogger();

loggerFactory.AddSerilog(log);

如果我运行以下命令,那么输出会很完美,所以我知道这取决于移动到 appsettings;

var log = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.MSSqlServer("connectionString", "Logs", schemaName:"Schema")
.WriteTo.File("Logs\\Serilog\\log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();

然后在我的 Program.cs 中;

    public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(config =>
config.AddJsonFile(
x =>
{
x.Path = "appsettings.json";
x.Optional = true;
x.ReloadOnChange = true;
})
.AddJsonFile(
x =>
{
x.Path = "appsettings.{currentEnv}.json";
x.Optional = true;
x.ReloadOnChange = true;
})
)
.UseStartup<Startup>()
.Build();

请注意,appsettings.json 和特定环境目前都包含相同的数据。

我安装了以下版本的 Serilog;

Serilog 2.7.1Serilog.spNetCore 2.1.1Serilog.Enrichers.Environment 2.1.2Serilog.Settings.Configuration 3.0.1Serilog.Sinks.Async 1.3.0Serilog.Sinks.File 4.0.0Serilog.Sinks.MSSqlServer 5.1.2

最佳答案

在您的 Program.cs 文件中试试这个:

UseStartup<Startup>()
.UseSerilog()
.Build();

这将告诉 HostBuilder 使用 Serilog 包。

关于c# - Asp.Net Core 2.1 的 Serilog 不从 appsettings.json 写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54133526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com