我尝试设置跟踪日志记录有一段时间了,但就是无法让它正常工作。关于这个主题有这么多错误/过时的文章并没有帮助。但请有人给我一个良好且实用的设置,用于 Azure (1.6) 的跟踪日志记录和查看
我想要做的就是能够从我的应用程序捕获和查看跟踪消息。
我从标准 DiagnosticMonitorTraceListener 开始,但最终出现在表存储中。我一生都无法弄清楚应该如何与表存储中的日志进行交互。在 Visual Studio 中,我可以“查看”它,但使用它非常麻烦,几乎没有用。没有排序,必须编写繁琐的日期过滤器,其中一半时间不起作用。
自定义日志似乎是可行的方法。我用 log4net 做了很多工作,所以我选择了那个。您可以将 log4net 重定向到跟踪,但最终会得到同样糟糕的表存储。它是自定义日志文件。现在我已经很困惑这是否支持。一些文章提到诊断文件锁会导致各种问题。不确定这是否仍然是一个问题,尽管很奇怪,为什么当您无法读取/写入日志时提供自定义日志传输功能?!无论如何,我在写入日志时没有遇到任何问题(我已经注意到)。
根据 MSDN 文章进行设置(顺便说一句,非常模糊且非常分散)。在ServiceDefinition (128Mb) 中定义LocalStorage 元素。在角色启动时添加目录日志传输。去。这似乎有效。直到一段时间后,该角色在重新启动期间自行崩溃,并显示“OverallQuota”消息不够大,并且该角色刚刚死亡并拒绝出现。即使在 4080Mb 内也有如此多的可用空间,这根本没有意义。
关于增加配额的文章再次出现,但这些似乎让事情变得更糟。在 ServiceDefinition 中将 DiagnosticStore 大小设置为 8Gb。不起作用。仍然会失败,只是数字更高。将OverallQuota 设置为等于8Gb 也没有帮助。由于某种原因,在干净的镜像上安装可以正常工作,但是当重新启动或更新时,它决定以不同的方式计算配额。无论 DiagnosticsStore 的大小如何,“计算”的值始终为 OverallQuota + Log4Net LocalStorage。我所做的一切似乎都无法改变这一点。非常令人沮丧,因为它似乎有效,但不久之后就死了。
我也尝试过diagnostics.wadcfg,但无法让Azure识别它们。我确保它们被复制到根输出文件夹,并从我的代码中删除了对监视器的任何更改。 Nada,zip...浏览了我能在实例上找到的所有日志文件。没有任何提及或错误。
为什么这在 Azure 上如此困难?跟踪日志是任何应用程序最基本的日志记录工具。这确实扼杀了 Azure 体验。
最佳答案
我们也在 Azure 上使用 Log4Net
小警告,当每个实例运行多个角色时,我只能让一个角色[主要角色]真正成功地写入日志......[不好!!!]
如何设置...很简单。
在 Global.asax 中按照通常的方式配置 log4net
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure();
}
在您的角色入口点...也运行配置。 F#*^ 知道为什么,但如果你不在这两个地方都这样做,它就不起作用(无论如何,在我的情况下不是)
public override void Run()
{
log4net.Config.XmlConfigurator.Configure();
}
然后在你的配置文件中
<log4net>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="TraceAppender" />
</root>
</log4net>
确保启用了 Azure 跟踪
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
我们选择不使用 Storage Studio 的原因是,您付费购买的任何来自 Azure 的数据...Azure 中的数据交易都是免费的,连接到表存储非常简单,因此我们构建了一个屏幕来显示日志,花了 2/3 小时,效果就像炸弹一样
关于logging - 工作 azure 日志记录设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249797/