【发布时间】: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