WebAPI问题追踪日志记录过滤器
公司项目比较坑爹,毕竟涉及到前后端分离、多部门协作,很多时候系统出问题,哪怕已经很清楚了,协作方依然要我们把API调用入参、响应等记录下来,而且是全记录,不光是异常调用,待调查结束后这些日志又需要卸下来。频繁在代码中加日志,去日志,一次两次还行,搞多了,不胜其烦,作为技术人,一定得偷懒。有鉴于此,做了个日志记录操作过滤器,需要时候特性标记,不要时候直接去掉。
废话不多说,直接上代码实现:
/// <summary>
/// 日志记录过滤器,主要用于跟踪问题,正常情况下不需要使用
/// </summary>
public class LogAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(Controllers.HttpActionContext actionContext)
{
LogHelper.Warn(actionContext.ActionDescriptor.ActionName + "进入执行:", Utils.SerializeObject(actionContext.ActionArguments));
base.OnActionExecuting(actionContext);
} public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
string actonName = actionExecutedContext.ActionContext.ActionDescriptor.ActionName;
if (actionExecutedContext.Exception != null)
{
LogHelper.Error(actonName + "退出执行异常:", actionExecutedContext.Exception);
LogHelper.Error(actonName + "异常参数:", Utils.SerializeObject(actionExecutedContext.ActionContext.ActionArguments));
}
else
{
LogHelper.Warn(actonName + "成功退出执行:", Utils.SerializeObject(actionExecutedContext.ActionContext.ActionArguments));
LogHelper.Warn(actonName + "响应:", actionExecutedContext.Response.Content.ReadAsStringAsync().Result);
}
base.OnActionExecuted(actionExecutedContext);
}
}
WebAPI问题追踪日志记录过滤器的更多相关文章
- Servlet过滤器——日志记录过滤器
1.概述 在实际的项目开发过程中,经常需要在项目运行时,记录并在控制台中输出运行时的日志信息,便于查看项目的运行状况.本实例将介绍如何应用过滤器实现日志记录.运行本实例,将在控制台中输出项目运行时的日 ...
- springcloud zuulfilter 实现get,post请求日志记录功能
import com.alibaba.fastjson.JSONObject; import com.idoipo.infras.gateway.open.model.InvokeLogModel; ...
- 学习总结 之 WebApi服务监控 log4net记录监控日志
在请求WebApi 的时候,我们更想知道在请求数据的时候,调用了哪个接口传了什么参数过来,调用这个Action花了多少时间,有没有人恶意请求.我们可以通过记录日志,对Action进行优化,可以通过日志 ...
- Python 日志记录与程序流追踪(基础篇)
日志记录(Logging) More than print: 每次用 terminal debug 时都要手动在各种可能出现 bug 的地方 print 相关信息来确认 bug 的位置: 每次完成 d ...
- .Net Core中间件和过滤器实现错误日志记录
1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件. 每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下 ...
- Asp.NetCore依赖注入和管道方式的异常处理及日志记录
前言 在业务系统,异常处理是所有开发人员必须面对的问题,在一定程度上,异常处理的能力反映出开发者对业务的驾驭水平:本章将着重介绍如何在 WebApi 程序中对异常进行捕获,然后利用 Nlog ...
- Python开发之日志记录模块:logging
1 引言 最近在开发一个应用软件,为方便调试和后期维护,在代码中添加了日志,用的是Python内置的logging模块,看了许多博主的博文,颇有所得.不得不说,有许多博主大牛总结得确实很好.似乎我再写 ...
- wcf利用IDispatchMessageInspector实现接口监控日志记录和并发限流
一般对于提供出来的接口,虽然知道在哪些业务场景下才会被调用,但是不知道什么时候被调用.调用的频率.接口性能,当出现问题的时候也不容易重现请求:为了追踪这些内容就需要把每次接口的调用信息给完整的记录下来 ...
- springmvc+log4j操作日志记录,详细配置
没有接触过的,先了解一下:log4j教程 部分内容来:log4j教程 感谢! 需要导入包: log包:log4j-12.17.jar 第一步:web.xml配置 <!-- log4j配置,文件路 ...
随机推荐
- R语言自动化报告格式——knitr
R语言自动化报告格式--knitr 相关文献: R语言自动化报告格式--knitr 资讯 | R Notebooks 即将发布 ------------------------------------ ...
- ORA-00922:选项缺失或无效
1.错误描述 ORA-00922:选项缺失或无效 2.错误原因 3.解决办法
- SecurityError:Error #2048:安全沙箱冲突
1.错误描述 SecurityError:Error #2048:安全沙箱冲突:http://localhost:8080/YHD/flash/YHD.swf 不能从 http://123.89.45 ...
- CentOS时钟同步服务器
①本地时钟服务器需要安装chrony服务,可以通过yum.rpm.源码包安装,chrony支持C/S模式 ②编辑本地时钟服务,使其指向提供标准时间服务器,例如:中国国家授时中心NTP服务器. 修改配置 ...
- 让安卓app支持swf的一个播放器,和自己编写的音乐管理程序
jcenter方式导入 在需要用到这个库的module中的build.gradle中的dependencies中加入 dependencies { compile 'com.yhd.hdswfplay ...
- 已在Terminal安装了包,PyCharm却提示无法找到
想使用python的dpkt包解析pcap文件进行分析,已经按照提示在终端输入sudo apt install python-dpkt,并且显示安装成功. 但是回到PyCharm中依然报错,如图所示: ...
- Poj2749:Building roads
题意 有 N 个牛栏,现在通过一条通道(s1,s2)要么连到s1,要么连到s2,把他们连起来,他们之间有一些约束关系,一些牛栏不能连在同一个点,一些牛栏必须连在同一个点,现在问有没有可能把他们都连好, ...
- mailgun 发邮件示例代码Python版
1 首先到mailgun官网注册账号,并激活账号 点击domains,进入默认的域名,最底下那个sandbox域名就是默认的测试域名 如果自己有域名,也可以添加自己的域名测试,具体参考:ssr pan ...
- springboot dubbo filter之依赖注入null
@Autowiredprivate ICallerRepository callerRepository;...用dubbo提供的ServiceBean即可获取bean,因为该类已经实现了Applic ...
- react入门(一)
JSX语法: HTML 语言直接写在 JavaScript 语言之中,不加任何引号 , JSX语法中不能使用js中的关键字,例如:class 需要改为className JSX语法中要写表达式的话,需 ...