参考博客

https://www.cnblogs.com/hnsongbiao/p/7039666.html

书写LogFilterAttribute

 public class LogFilterAttribute : ActionFilterAttribute
{
private CommonService _commonService;
public LogFilterAttribute()
{
_commonService = new CommonService();
}
/// <summary>
/// Action执行后
/// </summary>
/// <param name="actionExecutedContext"></param>
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext.Exception != null)
{
var url = actionExecutedContext.ActionContext.Request.RequestUri;
var param = actionExecutedContext.ActionContext.ActionArguments;
var paramJson= Newtonsoft.Json.JsonConvert.SerializeObject(param);
var error = $"Exception:{DateTime.Now}(ㄒoㄒ){url}(ㄒoㄒ){paramJson}(ㄒoㄒ){actionExecutedContext.Exception.Message}";
_commonService.SaveLog(error);
}
}
}

在webapi.Config中注册LogFilterAttribute

 public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.Filters.Add(new LogFilterAttribute()); // Web API routes
config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "SwaggerIndex",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = RouteParameter.Optional }
);
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling =
Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
}

最新文章

  1. Linux文件查找命令 find 详解
  2. angular-ui-router中的$stateProvider设置
  3. Win7下SQLite的简单使用
  4. linux第1天 fork exec 守护进程
  5. CentOS学习笔记--系统服务 (daemons)
  6. websocket的php测试demo
  7. hdu 3952
  8. U3D物理碰撞总结
  9. java于23设计模式
  10. 新人报道~cnblogs
  11. Windows7 下安装 tersorflow
  12. Python3之数据类型
  13. python-基于tcp协议的套接字(加强版)及粘包问题
  14. SQL反模式学习笔记9 元数据分裂
  15. Flutter 知识点
  16. Linux中Kill掉进程的10种方法
  17. centos6.5升级安装openssl1.0.2h
  18. Linux手动添加系统环境共享库路径
  19. mybatis的配置文件中&lt;selectKey&gt;标签问题
  20. python opencv3 静态图片检测人脸

热门文章

  1. Flutter自定义绘制(1)- 绘制基础
  2. ASE19团队项目 beta阶段 model组 scrum report list
  3. 取出List&lt;Map&lt;String,Object&gt;&gt;里面Map的key:value值
  4. insert buffer/change buffer double write buffer,双写 adaptive hash index(AHI) innodb的crash recovery innodb重要参数 innodb监控
  5. 2018江苏徐州icpc试题-A-生化危机【多源点-基础广搜】
  6. Windows启动报错:无效的分区表 解决方法,哈哈
  7. VS 运行库MT、MD的区别
  8. mysql group_concat长度限制
  9. sort multiple-level dict
  10. sqlserver2014安装Windows版教程