我有一个.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
答案 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