gpt4 book ai didi

c# - 记录我的 ASP.NET Core 应用程序成功启动或未启动的时间

转载 作者:太空宇宙 更新时间:2023-11-03 22:51:22 25 4
gpt4 key购买 nike

所以我最近开始创建和编程 ASP.NET Core 2.0 应用程序。我一直在使用 Serilog 进行日志记录,我可以在本地计算机上写入 .txt 日志文件。此文件的路径写在我的 appsettings.json 文件中,该文件可以从我的 Startup.ConfigureServices 方法中读取。

但是,我想从我的程序类中记录我的 ASP.NET Core 应用程序何时成功启动或未成功启动。问题是:如何读取我的 appsettings.json 文件以从我的程序类中获取日志文件路径,以便我可以登录到该文件?

我试过:

var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
var configuration = builder.Build();

Log.Logger = new LoggerConfiguration()
.MinimumLevel
.Information().
WriteTo.RollingFile(configuration.GetValue<string>("LogFilePath") + "-{Date}.txt", LogEventLevel.Information)
//.WriteTo.Log4Net()
.CreateLogger();

来 self 的 Program.cs,但它无法读取我的 appsettings.json。我仔细检查了 GetValue 使用了正确的 key 。

最佳答案

我认为您可能缺少 ConfigurationBuilder 上的 SetBasePath(参见简单配置部分 here)。请参阅下面的示例,该示例也适用于环境特定的应用程序设置覆盖。

public class Program
{
public static int Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true)
.AddEnvironmentVariables();

var configuration = builder.Build();

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.RollingFile(configuration.GetValue<string>("LogFilePath") + "-{Date}.txt", LogEventLevel.Information)
.CreateLogger();

try
{
Log.Information("Starting web host");
BuildWebHost(args).Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Web Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((ctx, builder) =>
{
builder.ClearProviders();
builder.SetMinimumLevel(LogLevel.Information);
builder.AddSerilog();
})
.UseStartup<Startup>()
.Build();
}

关于c# - 记录我的 ASP.NET Core 应用程序成功启动或未启动的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202590/

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