从本地服务结构应用程序登录到Azure存储模拟器

本文关键字:Azure 存储 模拟器 登录 应用程序 服务 结构 | 更新日期: 2023-09-27 18:14:46

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

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

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

如何将事件记录到前提机器上本地运行的Azure存储模拟器?在处理Azure虚拟机时,从Azure门户启用日志记录似乎真的很容易,但在预置环境中,这感觉非常复杂,而且缺乏一些急需的文档。我试着在网上搜索一些具体的例子来说明如何做到这一点,并且我阅读了通过使用Azure Diagnostics收集日志的文章,但是它没有帮助,并且留下了许多未回答的问题。例如,我甚至发现自己被困在这里:

执行以下任务修改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>

Edit:我知道我可以通过使用Microsoft.Diagnostics.Tracing.TraceEvent NuGet包和订阅我的所有事件来手动做到这一点,但是什么是将我的跟踪记录到本地文件的正确方法,什么是本地服务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();
}

从本地服务结构应用程序登录到Azure存储模拟器

这里有一个快速入门示例。请看这里。你可以使用这个类。

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