通過日志查看Web Api詳細運行過程


1. 通過Nuget安裝System.Web.Http.Tracing.

 

2. 通過HttpConfiguration,注冊SystemDiagnosticsTraceWriter

 

        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            config.Filters.Add(new ValidateModelStateFilter());
            FluentValidationModelValidatorProvider.Configure(config);

            //regular registration config.Services.Replace(typeof(ITraceWriter), new SystemDiagnosticsTraceWriter()); //through an extension method  config.EnableSystemDiagnosticsTracing();
        }

3. 運行,即可看到整個運行過程的信息日志信息,通過日志信息可以窺探WebApi的運行內核信息。

發送請求:

 輸出信息為:

iisexpress.exe Information: 0 : Request, Method=POST, Url=http://localhost:52187/api/default/, Message='http://localhost:52187/api/default/'
“iisexpress.exe”(CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131659877920590491): 已加載“C:\Users\lenmo\AppData\Local\Temp\Temporary ASP.NET Files\vs\89abac48\79d00737\assembly\dl3\a74c6d75\00e4889b_139bd301\System.Web.Http.resources.dll”。模塊已生成,不包含符號。
iisexpress.exe Information: 0 : Message='Default', Operation=DefaultHttpControllerSelector.SelectController
iisexpress.exe Information: 0 : Message='WebApplication1.Controllers.DefaultController', Operation=DefaultHttpControllerActivator.Create
iisexpress.exe Information: 0 : Message='WebApplication1.Controllers.DefaultController', Operation=HttpControllerDescriptor.CreateController
iisexpress.exe Information: 0 : Message='所選操作“Post(UserModel user)”', Operation=ApiControllerActionSelector.SelectAction
“iisexpress.exe”(CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131659877920590491): 已加載“C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0.0__b77a5c561934e089\System.Numerics.dll”。已跳過加載符號。模塊進行了優化,並且調試器選項“僅我的代碼”已啟用。
iisexpress.exe Information: 0 : Message='讀取的值=“WebApplication1.Controllers.UserModel”', Operation=JsonMediaTypeFormatter.ReadFromStreamAsync
iisexpress.exe Information: 0 : Message='參數“user”已綁定到值“WebApplication1.Controllers.UserModel”', Operation=FormatterParameterBinding.ExecuteBindingAsync
iisexpress.exe Information: 0 : Message='模型狀態無效。user.Password: Please specify a first name', Operation=HttpActionBinding.ExecuteBindingAsync
iisexpress.exe Information: 0 : Message='將使用同一“JsonMediaTypeFormatter”格式化程序', Operation=JsonMediaTypeFormatter.GetPerRequestFormatterInstance
iisexpress.exe Information: 0 : Message='所選格式化程序=“JsonMediaTypeFormatter”,content-type=“application/json; charset=utf-8”', Operation=DefaultContentNegotiator.Negotiate
iisexpress.exe Information: 0 : Operation=ValidateModelStateFilter.OnActionExecutingAsync, Status=400 (BadRequest)
iisexpress.exe Information: 0 : Operation=DefaultController.ExecuteAsync, Status=400 (BadRequest)
iisexpress.exe Information: 0 : Response, Status=400 (BadRequest), Method=POST, Url=http://localhost:52187/api/default/, Message='Content-type=“application/json; charset=utf-8”,content-length=未知'
iisexpress.exe Information: 0 : Operation=JsonMediaTypeFormatter.WriteToStreamAsync
iisexpress.exe Information: 0 : Operation=DefaultController.Dispose

 

注意: 通過示例注冊代碼,默認將打印所有的運行日志,如果希望對日志進行篩選,可以通過以下方式:

            //regular registration
            config.Services.Replace(typeof(ITraceWriter), new SystemDiagnosticsTraceWriter() {   MinimumLevel= TraceLevel.Error});
            //through an extension method
            config.EnableSystemDiagnosticsTracing();

默認的注冊方式為: Info,即打印所有信息出來。TraceLevel的定義為:

  //
    // 摘要:
    //     指定跟蹤級別的枚舉。
    public enum TraceLevel
    {
        //
        // 摘要:
        //     已禁用跟蹤。
        Off = 0,
        //
        // 摘要:
        //     調試跟蹤的跟蹤級別。
        Debug = 1,
        //
        // 摘要:
        //     信息跟蹤的跟蹤級別。
        Info = 2,
        //
        // 摘要:
        //     警告跟蹤的跟蹤級別。
        Warn = 3,
        //
        // 摘要:
        //     錯誤跟蹤的跟蹤級別。
        Error = 4,
        //
        // 摘要:
        //     嚴重跟蹤的跟蹤級別。
        Fatal = 5
    }

 

也可以使用第三方的日志組件用於輸出運行時信息:如

WebApiContrib.Tracing.Log4Net
WebApiContrib.Tracing.Nlog

安裝方法,Nuget:

install-package WebApiContrib.Tracing.Nlog
install-package WebApiContrib.Tracing.Log4Net

注冊代碼類似:

httpConfiguration.Services.Replace(typeof(ITraceWriter), new NlogTraceWriter());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM