使用一个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方法调用的代码。感谢您的支持 –