如何组织集中日志?

时间:2012-11-16 07:20:29

标签: c# logging log4net nlog

情况是:我们在C#上开发了许多工作应用程序实例。我们希望他们登录一个地方(可能是一个文件)。据我所知log4netNLog可以通过TCP发送日志。问题是 - 如何监听这些日志并存储它? 是否有任何可行的解决方案来收集这些日志?

3 个答案:

答案 0 :(得分:2)

在log4Net中你应该配置appender,here official documentation参见RemotingAppender

对于listen TCP,你应该像this resource一样使用TcpListener,log4net存在一些客户端like this

答案 1 :(得分:1)

在NLog中,您可以考虑Database目标。 NLog还有一些您可能会考虑的目标,包括LogReceiverService,它将日志消息发送到WCF服务或Web服务,在那里它们可以记录到任何NLog目标,包括文件。

在log4Net中,您可能会考虑AdoNetAppender。配置示例here

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

答案 2 :(得分:0)

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

最佳架构

MS Application Insights - 用于检测日志

Apache Kafka - 充当管道和临时stoarge,将您的日志发送到kafka

logstash--可用于过滤日志的过滤器

elasticsearch - 一个没有sql db到存储过滤数据的地方

kibana - 仪表板从弹性中提取数据并提供视觉效果。

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