C# 在ASP.NET Core 2中初始化记录器服务之前记录异常的正确方法
我们正在使用连接到Graylog的Serilog来管理日志记录,这对于运行时问题非常有效,但我们遇到的问题是,该服务在C# 在ASP.NET Core 2中初始化记录器服务之前记录异常的正确方法,c#,.net-core,asp.net-core-2.0,C#,.net Core,Asp.net Core 2.0,我们正在使用连接到Graylog的Serilog来管理日志记录,这对于运行时问题非常有效,但我们遇到的问题是,该服务在Startup.cs中初始化,而在Program.cs中不可用,我们可能会在那里得到一个错误(IIS显示从Kestrel返回的500,但我们的日志中没有任何内容) 处理这个问题的推荐方法是什么?ASP核心模块的web.config中似乎有一个stdout选项,但不确定这是否会提供我需要的信息。另一个选项似乎是在Program.cs中添加一个单独的日志代码,但这似乎是一个不必要的解
Startup.cs
中初始化,而在Program.cs
中不可用,我们可能会在那里得到一个错误(IIS显示从Kestrel返回的500,但我们的日志中没有任何内容)
处理这个问题的推荐方法是什么?ASP核心模块的
web.config
中似乎有一个stdout选项,但不确定这是否会提供我需要的信息。另一个选项似乎是在Program.cs
中添加一个单独的日志代码,但这似乎是一个不必要的解决方法,因为可能有更好的默认方法。可以在Program.cs
中设置所有日志,建议使用Serilog。从:
公共类程序
{
公共静态int Main(字符串[]args)
{
Logger.Logger=新的LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override(“Microsoft”,LogEventLevel.Information)
.Enrich.FromLogContext()的
.WriteTo.Console()
.CreateLogger();
尝试
{
日志信息(“启动web主机”);
BuildWebHost(args.Run();
返回0;
}
捕获(例外情况除外)
{
Log.Fatal(例如,“主机意外终止”);
返回1;
}
最后
{
Log.CloseAndFlush();
}
}
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.useserlog()
.Build();
}
可以设置所有登录程序.cs
,建议使用Serilog。从:
公共类程序
{
公共静态int Main(字符串[]args)
{
Logger.Logger=新的LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override(“Microsoft”,LogEventLevel.Information)
.Enrich.FromLogContext()的
.WriteTo.Console()
.CreateLogger();
尝试
{
日志信息(“启动web主机”);
BuildWebHost(args.Run();
返回0;
}
捕获(例外情况除外)
{
Log.Fatal(例如,“主机意外终止”);
返回1;
}
最后
{
Log.CloseAndFlush();
}
}
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.useserlog()
.Build();
}
似乎就是这样-不确定我为什么错过了它。谢谢!这似乎是它-不知道为什么我错过了它。谢谢!
public class Program
{
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.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();
}
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog()
.Build();
}