我正在创建一个由几个微服务组成的应用程序,这些服务在Premises上的Azure Service Fabric上运行。我将在Windows服务器上托管它。
进行日志记录的推荐方法是什么? 我读了一些关于使用Windows事件跟踪(ETW)的内容。我应该用这个吗?我如何集中收集日志数据?
或者我应该使用ASP.NET MVC Core Logging并将logg保存到中央文件共享?
答案 0 :(得分:4)
您可以使用Azure Diagnostics EventFlow来获取由Service Dabric服务生成的ETW事件。通过使用(并添加自定义事件)在新的SF服务中为您准备的Service / ActorEventSources,您可以在基础Service Fabric框架所标记的ETW事件之上从您的服务中记录ETW事件。
在EventFlow中,您可以设置输入(ETW事件)和输出。您可以在这里选择适合您的输出。例如,如果您在本地运行并且具有Elastic设置,则可以将ETW事件路由到该事件并使其可在那里搜索。如果要登录自己的数据库,也可以使用自己的输出扩展EventFlow。
答案 1 :(得分:3)
说实话,我会删除所有默认的SF日志记录,只使用您在普通应用程序中使用的标准内容。 ETW引入了一种笨拙的非标准日志记录方法,这种方法很难使用。如果您计划将来使用.NET Core,则不能在Windows平台以外使用ETW。使用适当的接收器查看Log4Net,Serilog,NLog等。您必须使用SF上下文丰富日志记录,以了解它的来源,因为有许多相同服务的实例。我使用Serilog + Seq(http://getseq.net)用于在内部和Azure中运行的生产应用程序,因为这是了解日志的最简单方法。
答案 2 :(得分:0)
Seq似乎有一个成本结构,你可以按照yoape的答案站起来ELK stack。然而,为了更多地丰富答案,您可以通过Elastic搜索提供的Data Shippers将ETW事件推送到Logstash,在我的情况下,为Service Fabric Events执行此操作非常简单。