情况是:我们有许多工作应用程序实例,在C#
. 我们希望他们登录一个地方(可能是一个文件)。据我所知log4net
,NLog
可以通过 TCP 发送日志。问题是 - 如何收听这些日志并存储它?是否有任何可行的解决方案来收集这些日志?
3 回答
在 NLog 中,您可能会考虑Database目标。NLog 有一些您可能会考虑的其他目标,包括LogReceiverService,它将日志消息发送到 WCF 服务或 Web 服务,在那里它们可以记录到任何 NLog 目标,包括文件。
在 log4Net 中,您可能会考虑AdoNetAppender。配置示例在这里。
我会注意到,在过去,我实现了一个基于 WCF 的 LoggingService(最终类似于 NLog 的 LogReceiverService),这对我来说效果很好。
最好使用 MS 提供的应用程序洞察功能。它可以使用任何语言,而不仅仅是 Microsoft 语言。应用洞察分为两部分。用于检测遥测(记录数据)并在 azure 仪表板中可视化这些日志的 SDK。SDK 是开源的,您需要为 azure 可视化工具付费。如果您不想付费,请在代码中使用 Application insgists 并将这些日志发送到开源的弹性堆栈
最好的建筑
MS Application Insights——用于检测日志
Apache Kafka——充当管道和临时存储,将您的日志发送到 kafka
logstash——一个过滤器,你可以用它过滤日志
elasticsearch - 一个没有 sql 数据库到存储过滤数据的位置
kibana - 从弹性中提取数据并提供可视化的仪表板。
您还可以将 spark 链接到 kafka 输出以触发电子邮件、短信形式的警报。