netframework webapi IogAttribute记录request参数和错误信息
2024-09-08 07:45:58
参考博客
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);
}
最新文章
- Linux文件查找命令 find 详解
- angular-ui-router中的$stateProvider设置
- Win7下SQLite的简单使用
- linux第1天 fork exec 守护进程
- CentOS学习笔记--系统服务 (daemons)
- websocket的php测试demo
- hdu 3952
- U3D物理碰撞总结
- java于23设计模式
- 新人报道~cnblogs
- Windows7 下安装 tersorflow
- Python3之数据类型
- python-基于tcp协议的套接字(加强版)及粘包问题
- SQL反模式学习笔记9 元数据分裂
- Flutter 知识点
- Linux中Kill掉进程的10种方法
- centos6.5升级安装openssl1.0.2h
- Linux手动添加系统环境共享库路径
- mybatis的配置文件中<;selectKey>;标签问题
- python opencv3 静态图片检测人脸
热门文章
- Flutter自定义绘制(1)- 绘制基础
- ASE19团队项目 beta阶段 model组 scrum report list
- 取出List<;Map<;String,Object>;>;里面Map的key:value值
- insert buffer/change buffer double write buffer,双写 adaptive hash index(AHI) innodb的crash recovery innodb重要参数 innodb监控
- 2018江苏徐州icpc试题-A-生化危机【多源点-基础广搜】
- Windows启动报错:无效的分区表 解决方法,哈哈
- VS 运行库MT、MD的区别
- mysql group_concat长度限制
- sort multiple-level dict
- sqlserver2014安装Windows版教程