我目前使用Azure Application Insights登录我的所有Web API和MVC应用程序。显然,这种记录的大部分是自动的,这很好。对于我手动想要捕获的事件,我已经实现了一个“LoggingUtility”,其中包含“LogError”和“LogInformation”等方法,它们只调用Trace.TraceError和Trace.TraceInformation(想法是可以在一个实例中更改日志记录的实现放在未来)。然后,Application Insights将捕获Trace。
我已经开始在Azure Service Fabric中开发一些有状态服务,但似乎找不到使用Application Insights的方法。我偶然发现了一些文章,指向我正在预发布的NuGet包,但现在已被删除(https://www.nuget.org/packages/Microsoft.ServiceFabric.Telemetry.ApplicationInsights/)。
当然,Service Fabric模板会生成“ServiceEventSource”,但首先我看不出这对Application Insights有用,理想情况下我希望通过“LoggingUtility”类完成所有日志记录。
是否可以将Application Insights集成到Service Fabric中?如果是这样,我可以继续使用Trace(通过我的“LoggingUtility”类)吗?
答案 0 :(得分:2)
您有两种选择: 1.使用LoggingUtility类中的Application Insights SDK直接向AI发送信息 2.使用Windows Azure诊断(WAD)将事件源跟踪转发到AI,使用SF项目模板中提供的EventSource类。您可以将该类修改为LoggingUtility类实现。
考虑到您在Azure中运行SF群集,第二种方法是当前建议,因为Service Fabric系统服务事件也使用事件跟踪。
要将Azure诊断配置为AI,请按照本文中列出的步骤操作:https://azure.microsoft.com/en-us/blog/azure-diagnostics-integration-with-application-insights/
请注意,本文针对的是云服务和虚拟机,但只需使用虚拟机规模集来配置Azure诊断而不是虚拟机。这应该有用。
答案 1 :(得分:0)
我们使用了新的Microsoft.Extentions.Logging并编写了一个见解记录器 - 它通过Trace获取服务结构消息,我们还提取了所有未添加的ETW内容。