1.使用jps -l 查看springboot项目的进程ID 2.使用命令jstack -l 进程ID > log.txt 打印堆栈信息到文件,内容如下: "http-nio-8065-exec-4" #31 daemon prio=5 os_prio=0 tid=0x00007f40b5148000 nid=0x12f5 runnable [0x00007f407e0aa000] java.lang.Thread.State: RUNNABLE at java.util.zip…
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…
public static void main(String[] args) { int a = 10; try { int i = 1/0; } catch (Exception e) { System.out.println("--------------------"); e.printStackTrace();// 只能输出在控制台当中,日志文件看不到 System.out.println("--------------------"); log.error…
前言:今天打算为大家介绍一下我们我们在项目中必须得有的一个部分——日志!是的,就是那些让我们看着头疼的东西~~~好的日志可以帮助团队成员快速发现并解决问题,用好了可以大幅度提高代码缺陷修复效率!言归正传,今天先来讲讲如何为一个项目建立日志!解决方案:(slf4j+log4j2)项目地址:https://github.com/ksuth/wsyq.git 原理介绍:现在行业内有很多关于日志记录的jar包,我选用的slf4j可以通俗的理解为一个日志调用的接口,其本身里面是没有关于日志的具体实现,所以…
在开发过程中,打印日志是必不可少的,因为日志关乎于应用的问题排查.应用监控等.现在打印日志一般都是使用 slf4j,因为使用日志门面,有助于打印方式统一,即使后面更换日志框架,也非常方便.在 <Java 开发手册>中也有相关的规约. 所以在开发中,一般使用下面这种方式来打印日志. LOGGER.info("print: {}", "this is the log"); 不过有的应用会将 LOGGER 再封装一下,最终写成: LoggerUtil.info…
application.yml中加上 # springBoot+Mybatis 控制台打印SQL语句 (方式一) logging: level: com.zoctan.api.mapper : debug # 配置slq打印日志 (方式二) mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 上面二选一就可以了. 效果:…
错误信息: 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…
目前,java下应用最广泛的日志系统主要就是两个系列: log4j和slf4j+logback . 其中,slf4j只包含日志的接口,logback只包括日志的具体实现,两者加起来才是一个完整的日志系统.Log4j则同时包含了日志接口和实现. 这两套日志系统之间有可以相互兼容的组件,分别是slf4j-log4j12和 log4j-over-slf4j,引入之后就可以用log4j打出slf4j接口的日志,或者用logback打出log4j接口的日志. 背景知识介绍到这里,再简单说一下标题里提到的问…
之前在使用自定义线程池异步执行耗时任务时,一直记着如果业务方法抛出异常没有捕获,那么是看不到日志框架输出的异常日志的,所以总是在业务方法中包裹一层try-catch捕获可能发生的异常.也未去深入为什么没有打印异常日志和解决方法,这里记录下自己的总结. 1.事例 @Slf4j @SpringBootTest @RunWith(SpringRunner.class) public class ThreadPoolExecutorTest { //这里直接使用ThreadPoolExecutor类,这…
在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码. 一.Spring AOP AOP(Aspect-Oriented Programming,面向切面编程),它利用一种"横切"的技术,将那些多个类的共同行为封装到一个可重用的模块.便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性. AOP中有以下概念: Aspect(切面):声明类似于Java中的类声明,在Asp…