情况是:我们有许多使用C#开发的应用程序实例。我们想要它们记录到一个地方(可以是一个文件)。据我所知,log4net和NLog可以通过TCP发送日志。问题在于-如何监听这些日志并存储它?是否有可以收集这些日志的可行解决方案?
最好使用MS提供的Application Insights功能。它可以用于任何语言,而不仅仅是Microsoft语言。Application Insights分为两部分。SDK用于仪器化遥测(日志数据)并在Azure仪表板中可视化这些日志。SDK是开源的,您需要支付Azure可视化工具的费用。如果您不想支付,则可以在代码中使用Application Insights,并将这些日志发送到开源的Elastic Stack。
最佳架构
MS Application Insights--用于仪器化日志
Apache Kafka--作为管道和临时存储,将日志发送到Kafka
Logstash--一个过滤器,您可以使用它来过滤日志
Elasticsearch--一个NoSQL数据库,用于存储过滤后的数据
Kibana--从Elastic拉取数据并提供可视化的仪表板。
此外,您还可以将Spark链接到Kafka输出以触发电子邮件、短信等形式的警报。