错误信息: nested exception is java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)] with root cause:错误原因: joinPoint.getArgs()返回的数组中携带有Request(HttpServl…
AOP的日志拦截类中,抛出异常: java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode 主要原因:对方法的参数使用JSON.toJSONString(args[index])转换时,有异常抛出[如果参数类型是请求和响应的http,使用JSON.toJSONString()转换会抛异常] 解决方案:将不能进行序列化的入…
原文链接:https://my.oschina.net/mengzhang6/blog/2395893 关于一次AOP拦截入参记录日志报错的梳理总结 将服务发布到tomcat中后,观察服务的运行状态以及日志记录状况: 发现有如下一个问题: 2018-10-31 16:20:10,701 [] INFO aspect.PayMethodLogAspectJ - rest 请求开始{1540974010700}:clazzName: com.yuantu.unified.pay.openapi.Op…
前言 AOP 是 Aspect Oriented Program (面向切面)的编程的缩写.他是和面向对象编程相对的一个概念.在面向对象的编程中,我们倾向于采用封装.继承.多态等概念,将一个个的功能在对象中来实现.但是,我们在实际情况中也发现,会有另外一种需求就是一类功能在很多对象的很多方法中都有需要.例如有一些对数据库访问的方法有事务管理的需求,有很多方法中要求打印日志.按照面向对象的方式,那么这些相同的功能要在很多地方来实现或者在很多地方来调用.这就非常繁琐并且和这些和业务不相关的需求耦合太…
在开发过程中,打印日志是必不可少的,因为日志关乎于应用的问题排查.应用监控等.现在打印日志一般都是使用 slf4j,因为使用日志门面,有助于打印方式统一,即使后面更换日志框架,也非常方便.在 <Java 开发手册>中也有相关的规约. 所以在开发中,一般使用下面这种方式来打印日志. LOGGER.info("print: {}", "this is the log"); 不过有的应用会将 LOGGER 再封装一下,最终写成: LoggerUtil.info…
@Aspect // 申明是个spring管理的bean @Component @Slf4j public class LogAspectServiceApi { private JSONObject jsonObject = new JSONObject(); // 申明一个切点 里面是 execution表达式 @Pointcut("execution(public * com.itmayiedu.api.service.*.*(..))") private void contro…
import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.impl.Log4jLogEvent; import org.apache.logging.log4j.core.layout.PatternLayout; import org.apache.logging.log4j.message.SimpleMessage; /** * Created by lanhuajian on 2017/3/29…
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gs…
打印gc日志 1.对指定运行程序输出GC日志: 点击edit configurations... 在vm options处加入-XX:+PrintGCDetails 测试:代码调用system.gc后输出以下内容: 2.修改idea32/64.exe.vmoptions 文件 在idea的安装目录下,有2个vmoptions文件,分别为: idea.exe.vmoptionsidea64.exe.vmoptions这2个分别是idea 32位和64位jvm的配置文件 不过不建议直接修改这2个配置…
实现了传输进去的字符串所在的文档,函数和行数显示功能. 实现了将传入的可变参数打印到日志功能. #include<stdio.h> #include<stdarg.h> #include<string.h> const char * g_path = "/home/exbot/wangqinghe/log.txt"; #define LOG(fmt,...) my_fprintf(__FILE__,__FUNCTION__,__LINE__,fmt,…