需求

maven依赖

p6spy

p6spy

3.8.7

com.google.guava

guava

28.2-jre

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-web

mysql

mysql-connector-java

runtime

org.projectlombok

lombok

true

打印sql

配置要点:

驱动配置 application.properties

spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver

spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/demo_datasource

psy配置

# 单行日志

logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat

# 使用Slf4J记录sql

appender=com.p6spy.engine.spy.appender.Slf4JLogger

# 是否开启慢SQL记录

outagedetection=true

# 慢SQL记录标准,单位秒

outagedetectioninterval=2

aop打印持久层执行时间

使用aop实现;

package com.springbootpractice.demo.p6spy.aop;

import lombok.SneakyThrows;

import lombok.extern.slf4j.Slf4j;

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Pointcut;

import org.springframework.stereotype.Component;

import org.springframework.util.StopWatch;

/**

* 说明:aop配置

* @author carter

* 创建时间: 2020年02月16日 8:49 下午

**/

@Aspect

@Component

@Slf4j

public class PrintTimeCostAspectJConfig {

@SneakyThrows

@Around("myPointCut()")

public Object around(ProceedingJoinPoint pj) {

Object res = null;

String methodName = pj.getSignature().toShortString();

StopWatch stopWatch = new StopWatch(methodName);

stopWatch.start();

try {

res = pj.proceed();

} catch (Throwable ex) {

throw ex;

} finally {

stopWatch.stop();

log.warn("{}执行耗时{}毫秒", methodName, stopWatch.getTotalTimeMillis());

}

return res;

}

@Pointcut("execution(* com.springbootpractice.demo.p6spy.web..*(..))")

public void myPointCut() {

}

}

启用aop注解:

@EnableAspectJAutoProxy(proxyTargetClass = true)

小结

来个效果截图:

通过本片文章,你可以学会:

给代码添加aop切面,增加日志或者打印出方法执行总耗时;

给你的数据持久层打印出所有的sql语句,方便生产环境排查问题;

希望大家平安度过冠疫!每天持续精进!

原创不易,转载请注明出处。

java没有打印mysql日志_0216 aop和打印数据库执行日志相关推荐

  1. mysql 日志刷新到磁盘_MySQL数据库刷日志的方法

    我们知道InnoDB采用Write Ahead Log策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页.既然有重做日志保证数据持久性,查询时也可以直接从缓冲池页中 ...

  2. mysql ldf文件太大_Linux_数据库清除日志文件(LDF文件过大),清除日志: 复制代码 代码如 - phpStudy...

    数据库清除日志文件(LDF文件过大) 清除日志: 复制代码 代码如下: DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT ...

  3. java如何向mysql插入_java中怎么向数据库插入数据 ?

    展开全部 Java程序向数据库中插入数据,代码如下://首先创建数据库,(access,oracle,mysql,sqlsever)其中之一,32313133353236313431303231363 ...

  4. sql server数据库事务日志已满请参阅log_reuse_wait_desc怎么解决?

    数据库使用时,莫名其妙出现关于事务日志已满的报错.具体报错如下: 数据库中的事务日志已满.若要查明无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc ...

  5. html打印日志_SpringBoot 2.X Kotlin系列之AOP统一打印日志

    在开发项目中,我们经常会需要打印日志,这样方便开发人员了解接口调用情况及定位错误问题,很多时候对于Controller或者是Service的入参和出参需要打印日志,但是我们又不想重复的在每个方法里去使 ...

  6. java main 方法使用 HttpClients发送请求 不打印debug日志

    记录目的:java main 方法使用HttpClients发送请求不打印debug日志 记录背景: 使用java main方法测试接口响应时间 发现问题: 控制台打印巨多debug日志 解决方法: ...

  7. SpringBoot3【① 基本框架原理+常用注解及其底层+AOP底层原理+yaml和日志框架】

    SpringBoot3-特性介绍和快速入门 1.简介 1. 前置知识 Java17 Spring.SpringMVC.MyBatis Maven.IDEA 2. 环境要求 环境&工具 版本(o ...

  8. java看log技巧_Log日志框架的学习五.正确使用日志的10个技巧

    做一个苦逼的Java攻城师, 我们除了关心系统的架构这种high level的问题, 还需要了解一些语言的陷阱, 异常的处理, 以及日志的输出, 这些"鸡毛蒜皮"的细节. 这篇文章 ...

  9. SpringBoot2.0 基础案例(11):配置AOP切面编程,解决日志记录业务

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.AOP切面编程 1.什么是AOP编程 在软件业,AOP为Asp ...

最新文章

  1. Linux(Centos)之安装Java JDK及注意事项
  2. Matplotlib绘制指向点箭头
  3. vue-cli3.0 移动端适配
  4. 2019年集五福本周五上线!四种玩法你都会了吗?
  5. pod setup 慢 的问题
  6. springboot+mybatis调用oracle存储过程
  7. mysql协议重传,MySQL · 源码分析 · 网络通信模块浅析
  8. 点击Cell中的按钮时,如何取所在的Cell
  9. c++ ffmpeg内存推流_最简单的基于FFmpeg的AVfilter的例子
  10. 2019年3月计算机ms二级考试题库,2019年3月全国计算机二级MSOffice章节练习题(2).doc...
  11. Unity 内嵌网页
  12. tkinter中text插入_tkinter做一个体重档案
  13. 顺风车Android性能优化之View布局优化
  14. 「leetcode」35.搜索插入位置:每次遇到二分法,都是一看就会,一写就废
  15. pcb板可挖孔吗_PCB板上的过孔的种类及打孔注意事项
  16. Johnson算法PlantSimulation解决两机器多作业排版问题
  17. MAC 青花瓷(Charles)爪机HTTPS 抓包
  18. 美联储加息负面效应外溢
  19. tkinter浏览器组件
  20. 循环控制语句--for循环

热门文章

  1. 如何使用log4j记录日志
  2. python教程自带数据库_python教程自带数据库 | Python学哪个数据库
  3. Windows平台下动态链接库的总结
  4. php mysql 取最小值_php – 根据另一个值更新最小值 – MySql
  5. body curl 设置post_curl 命令详解
  6. vlookup练习_大胆合并吧!VLOOKUP坐字法专做单元格合并查找
  7. php 避免xss_PHP防止XSS注入
  8. Bash脚本教程之目录堆栈
  9. mysql加上判断_在mysql中where加if判断
  10. Slip.js – 在触摸屏上实现 Swipe 对列表重新排序