我有一个命名的事件源作为我的日志记录的一部分:
[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>
文件中的ApplicationManifest.xml
部分的末尾,但它没有做任何事情:
<Diagnostics>
<ETWSource IsEnabled="true">
<Destinations>
<AzureBlob IsEnabled="true" ConnectionString="UseDevelopmentStorage=true" ConnectionStringIsEncrypted="false" ContainerName="traces" />
</Destinations>
</ETWSource>
</Diagnostics>
编辑:我知道我可以使用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();
}