【问题标题】:How to send logs to ServiceEventSource from outside of Service Fabric?如何从 Service Fabric 外部将日志发送到 ServiceEventSource?
【发布时间】:2017-07-26 15:37:21
【问题描述】:

我什至不确定这是否可行,但我的 Service Fabric 微服务使用以下方式将日志信息发送到 ServiceEventSource:

ServiceEventSource.Current.ServiceMessage(this.Context, "this is my log message");

我的外部(非 Service Fabric)应用程序使用无状态 WebAPI(Service Fabric),但它当前记录到文本文件。有没有办法让我的外部应用程序也以某种方式登录到 ServiceEventSource,这样我就不必同时查看这两个地方了?

【问题讨论】:

  • 有点跑题了,但是在这种情况下,您有不同的日志来源,我建议您使用单一位置进行收集,例如数据库/表存储或更强大的日志记录解决方案之一,例如logstash 或 splunk,它们为不同的服务/应用程序提供转发器/附加器。
  • 你将ServiceEventSource的事件输出到哪里?您可以为外部服务创建一个单独的EventSource,并使用像 Diagnostics Evenflow (github.com/Azure/diagnostics-eventflow) 这样的库将这两个源的事件转发到一个目标。

标签: c# asp.net azure-service-fabric


【解决方案1】:

只需与您的外部应用程序共享ServiceEventSource 类。您可以通过简单地共享代码或将其打包在 NuGet 包中或通过在外部应用程序中引用构建的 .dll 来做到这一点。

请注意:EventSource 和 ETW 日志记录通常非常挑剔。您对 EventSource 的定义在两个地方确实应该相同,我们的它很可能根本不起作用,或者以奇怪且难以理解的方式失败。

【讨论】:

  • 谢谢,@yoape!我会试一试,然后报告结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2018-07-29
  • 2016-06-13
  • 2023-04-06
  • 2017-12-09
  • 2019-09-27
相关资源
最近更新 更多