如何配置Trace语句以转至Windows Azure移动服务中的Portal

时间:2014-06-04 14:36:40

标签: azure logging azure-mobile-services

我有一个.Net后端移动服务,我希望我的System.Diagnostics.Trace语句转到与ApiServices.Log(即门户网站)相同的目的地。

这样做的原因是我不想将ITraceWriter传递给我的数据层,因为它添加了依赖项(System.Web.Http等)。

我开始研究一种方法,我将添加到跟踪侦听器集合中,类似于此处所述:

http://blog.tylerdoerksen.com/2012/04/20/logging-in-azure-part-3-traceevent-logs/

但是这会添加一个DiagnosticMonitorTraceListener实例,默认情况下它不存在于MobileService中,因为它存在于Microsoft.WindowsAzure.Diagnostics中。

有谁知道怎么做?

由于

˚F

1 个答案:

答案 0 :(得分:0)

通常,跟踪消息会写入日志,而不管它们来自何处。例如,如果我有这样的自定义控制器:

    public string Get()
    {
        IHubContext hubContext = Services.GetRealtime<ChatHub>();

        Trace.WriteLine("something!");
        Trace.TraceError("error");
        Trace.TraceInformation("info");


        hubContext.Clients.All.hello("Hello Chat Hub clients from custom controller!");
        return "Hello from custom controller!";
    }

然后&#34;错误&#34;和&#34;信息&#34;写得如你所愿。实际上,您可以使用Service Explorer,然后使用Azure和Mobile Services直接从VS中查找日志。右键单击您的服务,然后选择查看日志。

唯一的缺点是没有写入详细消息,因为默认日志级别是Info。您可以通过Kudu站点手动设置级别来解决此问题:

的https://.scm.azure-mobile.net

然后在&#34; Debug Console&#34;深入查看Site / diagnostics并编辑文件settings.json。看起来应该是这样的:

"AzureDriveEnabled":true,"AzureDriveTraceLevel":"Information","AzureTableEnabled":false,"AzureTableTraceLevel":"Error","AzureBlobEnabled":false,"AzureBlobTraceLevel":"Error"}

将信息值更改为详细信息,您也会收到详细信息。

希望这有帮助!

的Henrik