我们正在使用连接到Graylog的Serilog来管理我们的日志记录,这对于运行时问题非常有用,但我们遇到的问题是该服务在Startup.cs
中初始化,并且在Program.cs
中不可用,我们可能会收到错误(IIS显示500从Kestrel返回,但我们的日志中没有任何内容)。
建议的方法是什么 - 在ASP核心模块的web.config
中似乎有一个stdout选项,但不确定是否会提供我需要的信息。另一个选项似乎是在Program.cs
中添加单独的日志记录代码,但这感觉就像一个不必要的解决方法,因为可能有更好的默认方式。
答案 0 :(得分:4)
可以在Program.cs
中设置所有日志记录,并建议使用Serilog。来自Serilog.AspNetCore README:
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();
}