【问题标题】:Logging to Azure Storage Emulator from on premise Service Fabric application从本地 Service Fabric 应用程序记录到 Azure 存储模拟器
【发布时间】:2016-10-25 14:34:43
【问题描述】:

我有一个命名的事件源作为我的日志记录的一部分:

[EventSource(Name = "ExampleEventSource")]
internal sealed class ServiceEventSource : EventSource

当我在 Visual Studio 中调试我的应用程序时,我可以看到日志。我现在想在本地部署我的应用程序。 本机完全不使用 Azure 在线服务

如何将事件记录到本地计算机上本地运行的 Azure 存储模拟器?在处理 Azure 虚拟机时,从 Azure 门户启用日志记录似乎真的很容易,但是对于前提环境,这感觉非常复杂,并且缺少一些急需的文档。我尝试在网上搜索以找到一些具体示例来说明如何做到这一点,以及I read the Collect logs by using Azure Diagnostics article,但这并没有帮助,并且留下了许多未回答的问题。例如,我什至发现自己被困在这里:

通过执行以下任务修改template.json 文件。

这篇文章指的是什么template.json 文件?我只是从 Visual Studio 中将解决方案直接发布到远程本地计算机,并且由于它是一个本地项目,我想这可能是为什么没有 template.json 就我所知的部署所需的?不仅如此,我不确定本文是否真正涵盖了与我在这里寻找的相同级别的日志记录结果的本地解决方案。

非常感谢任何帮助,我希望任何决定提供帮助的人都可以同情我们这些想要维护相同的 Azure 日志记录框架,但让它在模拟器中本地登录,以便我们可以使用 Azure Explorer工具来查看我们的日志,我希望他们能够深入了解如何在本地环境中为本地环境完成这种类型的日志记录,同时通过 Visual Studio 的部署能力保持一定程度的功能。

编辑:我尝试将其附加到 ApplicationManifest.xml 文件中 <ApplicationManifest> 部分的末尾,但它什么也没做:

<Diagnostics>
  <ETWSource IsEnabled="true">
    <Destinations>
      <AzureBlob IsEnabled="true" ConnectionString="UseDevelopmentStorage=true" ConnectionStringIsEncrypted="false" ContainerName="traces" />
    </Destinations>
  </ETWSource>
</Diagnostics>

编辑:我知道我可以通过使用Microsoft.Diagnostics.Tracing.TraceEvent NuGet 包并订阅我的所有事件来手动执行此操作,但是将我的跟踪记录到本地文件的正确方法是什么,实现此目标的本地部署 Service Fabric 友好方式是什么?

using (var session = new TraceEventSession("MyRealTimeSession"))
{
    session.Source.Dynamic.All += delegate (TraceEvent data)
    {
        Console.WriteLine(data);
        // Can add code to flush to Azure tables here...
    };
    var eventSourceGuid = TraceEventProviders.GetEventSourceGuidFromName("ExampleEventSource");
    session.EnableProvider(eventSourceGuid);
    session.Source.Process();
}

【问题讨论】:

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


    【解决方案1】:

    有一个快速入门示例可以做到这一点。看看here。你可以使用this 类。

    他们所说的template.json 是用于在 Azure 中创建资源的 ARM 模板。

    【讨论】:

    • 你试过用它吗?它似乎不起作用。尝试使用&lt;Parameter Name="Tracing_StorageAccountConnectionString" Value="UseDevelopmentStorage=true" /&gt;&lt;Parameter Name="Tracing_StorageTableName" Value="traces" /&gt; 将其插入我的解决方案,在我的Program.cs 文件中实例化它,但没有。 SendEventsAsync 永远不会被调用...
    • 必须有一种更集成的方式来执行此操作...除了无法启动和运行该类之外,我更愿意使用Microsoft.Diagnostics.Tracing.TraceEvent 订阅事件然后登录天蓝色。然而,问题还在于所有这些库和类都不是一个集成的解决方案,而我可以在清单配置模板中直观地看到有一些 &lt;Diagnostics&gt; 支持 &lt;ETWSource&gt; 到本地位置,所以有 必须是一种更好、更综合的方式(手指交叉)。
    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 2016-10-12
    • 2016-03-21
    • 2016-05-02
    • 2015-12-24
    • 2018-11-14
    • 1970-01-01
    • 2019-07-29
    相关资源
    最近更新 更多