【问题标题】:Microsoft Rest ServiceClientTracing - how to output tracing results to Console or Debug?Microsoft Rest ServiceClientTracing - 如何将跟踪结果输出到控制台或调试?
【发布时间】:2017-10-25 23:42:39
【问题描述】:

ServiceClientTracing 类具有static boolean IsEnabled 属性,允许您打开跟踪。但是,当您将属性设置为 true 时,控制台/调试或其他任何地方都不会显示任何输出。

如何设置跟踪以使输出在控制台/调试窗口(或任何地方)中可见?

【问题讨论】:

    标签: c# .net azure


    【解决方案1】:

    似乎Microsoft.Rest.ClientRuntime项目默认不支持这个,所以你需要角色自己的类。例如:

    class DebugTracer : IServiceClientTracingInterceptor
    {
        public void Information(string message)
        {
            Debug.WriteLine(message);
        }
    
        public void TraceError(string invocationId, Exception exception)
        {
            Debug.WriteLine("Exception in {0}: {1}", invocationId, exception);
        }
    
        public void ReceiveResponse(string invocationId, HttpResponseMessage response)
        {
            string requestAsString = (response == null ? string.Empty : response.AsFormattedString());
            Debug.WriteLine("invocationId: {0}\r\nresponse: {1}", invocationId, requestAsString);
        }
    
        public void SendRequest(string invocationId, HttpRequestMessage request)
        {
            string requestAsString = (request == null ? string.Empty : request.AsFormattedString());
            Debug.WriteLine("invocationId: {0}\r\nrequest: {1}", invocationId, requestAsString);
        }
    
        public void Configuration(string source, string name, string value)
        {
            Debug.WriteLine("Configuration: source={0}, name={1}, value={2}", source, name, value);
        }
    
        public void EnterMethod(string invocationId, object instance, string method, IDictionary<string, object> parameters)
        {
            Debug.WriteLine("invocationId: {0}\r\ninstance: {1}\r\nmethod: {2}\r\nparameters: {3}",
                invocationId, instance, method, parameters.AsFormattedString());
        }
    
        public void ExitMethod(string invocationId, object returnValue)
        {
            string returnValueAsString = (returnValue == null ? string.Empty : returnValue.ToString());
            Debug.WriteLine("Exit with invocation id {0}, the return value is {1}",
                invocationId, returnValueAsString);
        }
    }
    

    Appropriated from Log4NetTracingInterceptor

    现在,如果您想开启追踪功能,您只需:

    ServiceClientTracing.IsEnabled = true;
    ServiceClientTracing.AddTracingInterceptor(new DebugTracer());
    

    【讨论】:

    • 这个。很漂亮。
    • 我是新手,但它记录在哪里?在哪里配置文件路径和日志级别?在 web.config 中如何?如果您可以提供少量样品,请不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多