记录和累积来自不同服务器的异常的最佳方法是什么?

What is the best way to log and accumulate exceptions from different servers?

目前,我们在不同的物理服务器上有几个 WebApi 应用程序实例。有时,会发生一些异常并降低服务质量。由于异常是自己登录服务器的,需要我们逐一检查,需要一段时间才能发现问题。

为了收集所有异常,我考虑了异常过滤器,但我们有一些 try/catch 没有重新抛出异常,所以我们丢失了一些异常。 我还考虑了 FirstChanceException 事件,以在第一次机会时记录所有异常。 为了在一个地方累积异常,我考虑了 Nlog,并使用共享文件夹。 它们是好的方法吗?有更好的方法或开源库吗?

我想将所有服务器的所有异常(无论它们是否处理)累积到一个地方以便快速检查和处理。

感谢 Panagiotis Kanavos,我终于想出了这个解决方案。

我利用 AppDomain.FirstChanceException Event 在我的应用程序中查找所有异常。

static void Main()
{
    AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;
}

static void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e)
{

}

然后将它们发送到 InfluxDB,这是一个开源时间序列数据库。

var payload = new LineProtocolPayload();
const string measurement = "logs";
var memoryLoad = new LineProtocolPoint(measurement,
     new Dictionary<string, object>
     {
         {"message", e.Exception?.Message,},
     },
     new Dictionary<string, string>
     {
         {"host", Environment.GetEnvironmentVariable("COMPUTERNAME")},
         {"app", "{my app name}"},
     },
     DateTime.UtcNow);
payload.Add(memoryLoad);       
var influxResult = Client.WriteAsync(payload, ct).Result;

最后,我在Grafana中展示了结果,这就是最终结果。