AOP如何在业务结束时,根据参入参数和返回结果添加日志

IMethodReturn retvalue = getNext()(input, getNext);

            if (retvalue.Exception != null)
            {
                System.IO.File.AppendAllText("a.txt", retvalue.Exception.ToString());
                retvalue.Exception = null;
            }

            if (retvalue != null)
            {
                var dll = Assembly.Load("AopIntercept");
                Type tx = dll.GetType("AopIntercept."+input.Target.ToString().Substring(input.Target.ToString().LastIndexOf(".") + 1) + "Log");
                MethodInfo mf = tx.GetMethod("Log");
                List<object> list = new List<object>();
                 list.Add(retvalue.ReturnValue);

                 foreach (var item in input.Inputs)
                 {
                     list.Add(item);
                 }

                mf.Invoke(null, list.ToArray());

            }
            return retvalue;
时间: 2024-11-05 22:34:19

AOP如何在业务结束时,根据参入参数和返回结果添加日志的相关文章

Installshield在安装结束时刷新系统

原文:Installshield在安装结束时刷新系统 在OnEnd里添加代码,两种解决方案 群友kevin的解决方案 #include "ifx.h"  //Call to Windows used in the "OnEnd" function to refresh the desktop prototype Shell32.SHChangeNotify(LONG, LONG, POINTER, POINTER); // -- Add the following

transitionend事件 监听 fadeIn fadeOut 两个方法无效(动画结束时无法执行transitionend里面的代码)

//下面的例子证明 fadeIn() fadeOut() 不能使用transitionend事件进行监听. //说白了在fadeIn fadeOut 后面监听动画结束时,transitionend是不会执行的. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <st

Spring中的AOP——在Advice方法中获取目标方法的参数(转)

获取目标方法的信息 访问目标方法最简单的做法是定义增强处理方法时,将第一个参数定义为JoinPoint类型,当该增强处理方法被调用时,该JoinPoint参数就代表了织入增强处理的连接点.JoinPoint里包含了如下几个常用的方法: Object[] getArgs:返回目标方法的参数 Signature getSignature:返回目标方法的签名 Object getTarget:返回被织入增强处理的目标对象 Object getThis:返回AOP框架为目标对象生成的代理对象 注意:当使

SpringMVC 中,当前台传入多个参数时,可将参数封装成一个bean类

在实际业务场景中,当前台通过 url 向后台传送多个参数时,可以将参数封装成一个bean类,在bean类中对各个参数进行非空,默认值等的设置. 前台 url ,想后台传送两个参数,userName 和 password: 1 http://localhost:8082/web/baseAction.do?pathVar=app/task/fetchItemDetail.do?userName=123&password=123 将参数封装成bean 类,并在bean类中对参数进行控制: 1 2 3

做ctf时遇到的知识点——参数篇

1.当flag在参数里时 可以尝试使用全局变量显示 ?hello=GLOBALS 2.当flag在文件里时 可以使用?hello=file("flag.php") 来显示文件内容 3.当要修改get为post时要更改接口 需要在包里添加 Content-Type:application/x-www-form-urlencoded;charset=utf-8 4.post传参时 所有字符要改成url编码 5.sha1只对字符型进行处理 数组返回false 原文地址:https://www

在服务器上处理请求时出现未知错误。服务器返回的状态码为500

操作方法: 为页面的ScriptManager控件添加EnablePartialRendering="false"的属性  此方法不是直接解决或规避问题的,是为了将详细的页面错误显示出来,以便找到需要修正 的地方,个人觉得这才是正道嘛,不能躲避错误,而应尽量不让错误发生. ---> 找出错误  -- > 修改. <asp:ScriptManager ID="ScriptManager" runat="server" Enable

当写listview的onItemClick的方法时写Toast的参数context写成this出现can&#39;t resolve method ’make text(OnClickListener,java.lang.String,int)&#39;的错误,原因

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Fruit fruit = fruitList.get(position); //Toast.makeText(this,fruit.getName(),Toast.L

perl程序执行时的命令行参数

perl命令行参数默认存储在perl自定义变量@ARGV中.#判断参数个数是否为0,根据上下文环境这里就是==符号,这里@ARGV指的是命令行参数数组元素个数if(@ARGV == 0)# 这里@ARGV指的是命令行参数数组,对数据元素遍历,打印出每个元素,这里的$_为foreach的默认自增变量foreach(@ARGV){ print "$_\n";}# $#ARGV表示@ARGV数组的最后一个元素的下标,该语句同样打印出数组中的每个元素,$ARGV[0]表示@ARGV数组的第0个

LNMP环境下压力测试时的主要调试参数

LNMP环境下压力测试时的主要调试参数: 进行HTTP的压力测试时,很多时候会遇到很小的并发数,服务器就会出现不响应,或者连接超时,一般导致的原因有如下几点: 一.Nginx主要调试参数 主模块参数: worker_processes = 4 #按照CPU核心数量的设置 worker_rlimit_nofile 65535; #Nginx进程打开文件描述符最大数量 use epoll; #使用epoll事件模型 worker_connections = 10240 #每个进程的最大连接数 HTT