C# 如何组织集中日志记录?

C# 如何组织集中日志记录?,c#,logging,log4net,nlog,C#,Logging,Log4net,Nlog,目前的情况是:我们有许多正在工作的应用程序实例,它们是在C上开发的。我们希望他们登录到一个地方(可能是一个文件)。据我所知,log4net和NLog可以通过TCP发送日志。问题是-如何侦听这些日志并将其存储? 是否有收集这些日志的有效解决方案?在log4Net中,您应该配置appender,请参阅RemotingAppender 对于侦听TCP,你应该使用TCPListEngin,在Log4NET中有一些客户端在NLog,你可以考虑目标。Nlog有一些您可以考虑的其他目标,包括将日志消息发送到W

目前的情况是:我们有许多正在工作的应用程序实例,它们是在
C
上开发的。我们希望他们登录到一个地方(可能是一个文件)。据我所知,
log4net
NLog
可以通过TCP发送日志。问题是-如何侦听这些日志并将其存储?
是否有收集这些日志的有效解决方案?

在log4Net中,您应该配置appender,请参阅RemotingAppender


对于侦听TCP,你应该使用TCPListEngin,在Log4NET

中有一些客户端在NLog,你可以考虑目标。Nlog有一些您可以考虑的其他目标,包括将日志消息发送到WCF服务或Web服务,在那里它们可以登录到任何Nlog目标,包括文件。 在Log4NET中,您可以考虑。配置示例


我会注意到,在过去,我实现了一个基于WCF的LoggingService(它最终类似于NLog的LogReceiverService),这对我来说非常有效

最好使用MS提供的Application insights功能。它可以使用任何语言,而不仅仅是Microsoft语言。Application insights分为两部分。用于检测遥测(日志数据)并在azure仪表板中可视化这些日志的SDk。SDK是开源的,您需要为azure可视化工具付费。如果您不想付费,那么在代码中使用应用程序insgist并将这些日志发送到开源的弹性堆栈

最佳建筑

MS Application Insights--用于检测日志

ApacheKafka——充当管道和临时存储目标,将日志发送到Kafka

logstash--一个可以过滤日志的过滤器

elasticsearch——一个无sql数据库,用于存储过滤后的数据

kibana——仪表板,它从elastic中提取数据并提供可视化效果


您还可以将spark链接到kafka输出,以电子邮件、短信的形式触发警报。

如何将通过MS App Insight收集的日志发送到kafka?