C#web api跟踪每个请求一个

C#web api跟踪每个请求一个,c#,asp.net-web-api,trace,C#,Asp.net Web Api,Trace,在C#Web API中是否有一种简单的方法来启用跟踪,但每个请求只有一个条目?这个条目应该包含关于请求的所有可用信息,也可能包含关于响应的信息(如果可能的话) 覆盖默认跟踪似乎会生成比实际有用的更多的条目,我只希望每个请求有一个条目 编辑: 这就是我们迄今为止所做的: 在WebAPIConfig->Register中,添加了以下行: Replace(typeof(ITraceWriter),新的MyAppTraceWriter()) MyAppTraceWriter类具有以下成员和函数。_tr

在C#Web API中是否有一种简单的方法来启用跟踪,但每个请求只有一个条目?这个条目应该包含关于请求的所有可用信息,也可能包含关于响应的信息(如果可能的话)

覆盖默认跟踪似乎会生成比实际有用的更多的条目,我只希望每个请求有一个条目

编辑:

这就是我们迄今为止所做的:

  • 在WebAPIConfig->Register中,添加了以下行:

    Replace(typeof(ITraceWriter),新的MyAppTraceWriter())

  • MyAppTraceWriter类具有以下成员和函数。_tracer对象是一个Log4Net对象,它只输出到一个txt文件:

        public static ILog _tracer;
    
    public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
    {
        _tracer = Logger.GetTracer();
    
        var rec = new TraceRecord(request, category, level);
        traceAction(rec);
        WriteTrace(rec);
    }
    
    protected void WriteTrace(TraceRecord rec)
    {
        var message = string.Format("{0};{1};{2};{3}", rec.Category, rec.Operator, rec.Operation, rec.Message);
    
        System.Diagnostics.Trace.WriteLine(message, rec.Category);
        _tracer.Info(message);
    }
    

    你试过什么不起作用的?这个问题太模糊了,任何人都无法给出一个好的答案。不过,日志记录或跟踪非常简单,因此如果您能提供有关问题的更多信息,肯定会有人提供帮助。您可能会发现这一点很有用:。我将编辑我的问题,以澄清我迄今为止所做的工作。查看本文:
    2014-07-16 01:30:24,384 [7] INFO  DevTracer [(null)] - System.Web.Http.Request;;;http://server/api/v1/courses/24744/teachers/0000000711
    2014-07-16 01:30:24,386 [7] INFO  DevTracer [(null)] - System.Web.Http.MessageHandlers;CorsMessageHandler;SendAsync;
    2014-07-16 01:30:24,397 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;DefaultHttpControllerSelector;SelectController;Route='MS_SubRoutes:System.Web.Http.Routing.IHttpRouteData[]'
    2014-07-16 01:30:24,420 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;DefaultHttpControllerSelector;SelectController;Courses
    2014-07-16 01:30:24,442 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;HttpControllerDescriptor;CreateController;
    2014-07-16 01:30:24,466 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;DefaultHttpControllerActivator;Create;
    2014-07-16 01:30:24,520 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;DefaultHttpControllerActivator;Create;API.Controllers.CoursesController
    2014-07-16 01:30:24,544 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;HttpControllerDescriptor;CreateController;API.Controllers.CoursesController
    2014-07-16 01:30:24,548 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;CoursesController;ExecuteAsync;
    2014-07-16 01:30:24,559 [7] INFO  DevTracer [(null)] - System.Web.Http.Action;ApiControllerActionSelector;SelectAction;
    2014-07-16 01:30:24,581 [7] INFO  DevTracer [(null)] - System.Web.Http.Action;ApiControllerActionSelector;SelectAction;Selected action 'RemoveTeacherFromCourse(Int32 courseInstanceID, String ssn)'
    2014-07-16 01:30:24,614 [7] INFO  DevTracer [(null)] - System.Web.Http.ModelBinding;HttpActionBinding;ExecuteBindingAsync;
    2014-07-16 01:30:24,620 [7] INFO  DevTracer [(null)] - System.Web.Http.ModelBinding;ModelBinderParameterBinding;ExecuteBindingAsync;Binding parameter 'courseInstanceID'
    2014-07-16 01:30:24,664 [7] INFO  DevTracer [(null)] - System.Web.Http.ModelBinding;ModelBinderParameterBinding;ExecuteBindingAsync;Parameter 'courseInstanceID' bound to the value '24744'
    2014-07-16 01:30:24,685 [7] INFO  DevTracer [(null)] - System.Web.Http.ModelBinding;ModelBinderParameterBinding;ExecuteBindingAsync;Binding parameter 'ssn'
    2014-07-16 01:30:24,689 [7] INFO  DevTracer [(null)] - System.Web.Http.ModelBinding;ModelBinderParameterBinding;ExecuteBindingAsync;Parameter 'ssn' bound to the value '0000000711'
    2014-07-16 01:30:24,692 [7] INFO  DevTracer [(null)] - System.Web.Http.ModelBinding;HttpActionBinding;ExecuteBindingAsync;Model state is valid. Values: courseInstanceID=24744, ssn=0000000711
    2014-07-16 01:30:24,715 [7] INFO  DevTracer [(null)] - System.Web.Http.Action;ApiControllerActionInvoker;InvokeActionAsync;Action='RemoveTeacherFromCourse(courseInstanceID=24744, ssn=0000000711)'
    2014-07-16 01:30:24,718 [7] INFO  DevTracer [(null)] - System.Web.Http.Action;ReflectedHttpActionDescriptor;ExecuteAsync;Invoking action 'RemoveTeacherFromCourse(courseInstanceID=24744, ssn=0000000711)'
    2014-07-16 01:30:25,338 [7] INFO  DevTracer [(null)] - System.Web.Http.Action;ReflectedHttpActionDescriptor;ExecuteAsync;Action returned 'System.Web.Http.Results.OkResult'
    2014-07-16 01:30:25,340 [7] INFO  DevTracer [(null)] - System.Web.Http.Action;ApiControllerActionInvoker;InvokeActionAsync;
    2014-07-16 01:30:25,341 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;CoursesController;ExecuteAsync;
    2014-07-16 01:30:25,371 [7] INFO  DevTracer [(null)] - System.Web.Http.Cors;AttributeBasedPolicyProviderFactory;GetCorsPolicyProvider;CorsRequestContext: 'Origin: http://server, HttpMethod: DELETE, IsPreflight: False, Host: server, AccessControlRequestMethod: null, RequestUri: http://server/api/v1/courses/24744/teachers/0000000711, AccessControlRequestHeaders: {}'
    2014-07-16 01:30:25,375 [7] INFO  DevTracer [(null)] - System.Web.Http.Cors;AttributeBasedPolicyProviderFactory;GetCorsPolicyProvider;CorsPolicyProvider selected: 'System.Web.Http.Cors.EnableCorsAttribute'
    2014-07-16 01:30:25,377 [7] INFO  DevTracer [(null)] - System.Web.Http.Cors;EnableCorsAttribute;GetCorsPolicyAsync;CorsRequestContext: 'Origin: http://server, HttpMethod: DELETE, IsPreflight: False, Host: server, AccessControlRequestMethod: null, RequestUri: http://server/api/v1/courses/24744/teachers/0000000711, AccessControlRequestHeaders: {}'
    2014-07-16 01:30:25,382 [7] INFO  DevTracer [(null)] - System.Web.Http.Cors;EnableCorsAttribute;GetCorsPolicyAsync;CorsPolicy selected: 'AllowAnyHeader: True, AllowAnyMethod: True, AllowAnyOrigin: True, PreflightMaxAge: null, SupportsCredentials: False, Origins: {}, Methods: {}, Headers: {}, ExposedHeaders: {}'
    2014-07-16 01:30:25,384 [7] INFO  DevTracer [(null)] - System.Web.Http.Cors;CorsEngine;EvaluatePolicy;
    2014-07-16 01:30:25,389 [7] INFO  DevTracer [(null)] - System.Web.Http.Cors;CorsEngine;EvaluatePolicy;CorsResult returned: 'IsValid: True, AllowCredentials: False, PreflightMaxAge: null, AllowOrigin: *, AllowExposedHeaders: {}, AllowHeaders: {}, AllowMethods: {}, ErrorMessages: {}'
    2014-07-16 01:30:25,392 [7] INFO  DevTracer [(null)] - System.Web.Http.MessageHandlers;CorsMessageHandler;SendAsync;
    2014-07-16 01:30:25,393 [7] INFO  DevTracer [(null)] - System.Web.Http.Request;;;Content-type='none', content-length=unknown
    2014-07-16 01:30:25,403 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;CoursesController;Dispose;
    2014-07-16 01:30:25,404 [7] INFO  DevTracer [(null)] - System.Web.Http.Controllers;CoursesController;Dispose;