将所有内容记录到事件查看器的错误做法?

Bad Practice to log everything to the Event Viewer?

我对此进行了搜索,但找不到答案。事件查看器可以容纳多少个条目?

我正在尝试记录休息请求的发起,因为我有多个调用单个 api 的应用程序。我想使用 Serilog 在事件查看器中记录所有这些请求。

在生产中,我将能够在 Splunk 中提取这些统计数据。

将数百万个条目记录到事件查看器是一种不好的做法吗?从字面上看,我们每天可以接到来自不同来源的多达 200 万次调用此 Net WebAPI 的请求。

我想通过数据库路由记录这些信息,但我的数据库管理员说不行。没有办法从文件中提取它,所以这是不可能的。

Log.Logger = new LoggerConfiguration()
    .WriteTo.EventLog("Sample App", manageEventSource: true)
    .CreateLogger();

Log.Information("Hello, Windows Event Log!");

Log.CloseAndFlush();


private void CallApi()
{
 Log.Information("Request originated from " + System.Environment.MachineName);
 //Call Web Api below
}

我不鼓励我的客户通过 Windows 事件查看器传递 Splunk 日志。这主要是因为上下文经常丢失。更不用说 MS 添加到每个事件的额外开销,Splunk 必须存储或删除(额外的 $ 或时间)。

事件通常以 wineventlog:application 的形式进入 Splunk,这很好,但是如果您有多个应用程序怎么办?您(可能)不希望它们都以相同的方式处理,因此应该以保留原始信息的方式摄取它们。

向 Splunk 发送数据的更好方法:

  1. 将日志写入文件并让 Splunk Universal Forwarder(代理)监控该文件。
  2. 使用 Splunk 的 HTTP 事件收集器 (HEC) 服务将日志直接写入 Splunk。