使用一個ActionFilter。您不想通過日誌記錄清理代碼。
public class MyLoggingFilter: ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
Log...
//actionContext.ActionDescriptor.ActionName
//actionContext.ControllerContext.ControllerDescriptor.ControllerName;
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
Log...
}
}
那麼你應該註冊所有控制器的動作過濾器在你的WebApiConfig
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.Filters.Add(new MyLoggingFilter());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
然後考慮使用像日誌框架log4net的或NLOG - 這些框架必須追加程序登錄到任何存儲類型( SQL,文件,無論什麼)。這些框架將異步記錄,因此不會減慢請求的執行速度。
我猜最好是寫一個「追蹤」方法,類,無論..並在每個api動作中使用它 –
我已經嘗試了下面的方法,因爲api已經存在修改api代碼我不認爲這是一個好主意,因爲我們有很多方法,所以我做了我創建了一個全局動作過濾器,並在這些動作過濾器中編寫了一些跟蹤API方法調用的代碼。感謝您的支持 –