java没有打印mysql日志_0216 aop和打印数据库执行日志
需求
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和打印数据库执行日志相关推荐
- mysql 日志刷新到磁盘_MySQL数据库刷日志的方法
我们知道InnoDB采用Write Ahead Log策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页.既然有重做日志保证数据持久性,查询时也可以直接从缓冲池页中 ...
- mysql ldf文件太大_Linux_数据库清除日志文件(LDF文件过大),清除日志: 复制代码 代码如 - phpStudy...
数据库清除日志文件(LDF文件过大) 清除日志: 复制代码 代码如下: DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT ...
- java如何向mysql插入_java中怎么向数据库插入数据 ?
展开全部 Java程序向数据库中插入数据,代码如下://首先创建数据库,(access,oracle,mysql,sqlsever)其中之一,32313133353236313431303231363 ...
- sql server数据库事务日志已满请参阅log_reuse_wait_desc怎么解决?
数据库使用时,莫名其妙出现关于事务日志已满的报错.具体报错如下: 数据库中的事务日志已满.若要查明无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc ...
- html打印日志_SpringBoot 2.X Kotlin系列之AOP统一打印日志
在开发项目中,我们经常会需要打印日志,这样方便开发人员了解接口调用情况及定位错误问题,很多时候对于Controller或者是Service的入参和出参需要打印日志,但是我们又不想重复的在每个方法里去使 ...
- java main 方法使用 HttpClients发送请求 不打印debug日志
记录目的:java main 方法使用HttpClients发送请求不打印debug日志 记录背景: 使用java main方法测试接口响应时间 发现问题: 控制台打印巨多debug日志 解决方法: ...
- SpringBoot3【① 基本框架原理+常用注解及其底层+AOP底层原理+yaml和日志框架】
SpringBoot3-特性介绍和快速入门 1.简介 1. 前置知识 Java17 Spring.SpringMVC.MyBatis Maven.IDEA 2. 环境要求 环境&工具 版本(o ...
- java看log技巧_Log日志框架的学习五.正确使用日志的10个技巧
做一个苦逼的Java攻城师, 我们除了关心系统的架构这种high level的问题, 还需要了解一些语言的陷阱, 异常的处理, 以及日志的输出, 这些"鸡毛蒜皮"的细节. 这篇文章 ...
- SpringBoot2.0 基础案例(11):配置AOP切面编程,解决日志记录业务
本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.AOP切面编程 1.什么是AOP编程 在软件业,AOP为Asp ...
最新文章
- Linux(Centos)之安装Java JDK及注意事项
- Matplotlib绘制指向点箭头
- vue-cli3.0 移动端适配
- 2019年集五福本周五上线!四种玩法你都会了吗?
- pod setup 慢 的问题
- springboot+mybatis调用oracle存储过程
- mysql协议重传,MySQL · 源码分析 · 网络通信模块浅析
- 点击Cell中的按钮时,如何取所在的Cell
- c++ ffmpeg内存推流_最简单的基于FFmpeg的AVfilter的例子
- 2019年3月计算机ms二级考试题库,2019年3月全国计算机二级MSOffice章节练习题(2).doc...
- Unity 内嵌网页
- tkinter中text插入_tkinter做一个体重档案
- 顺风车Android性能优化之View布局优化
- 「leetcode」35.搜索插入位置:每次遇到二分法,都是一看就会,一写就废
- pcb板可挖孔吗_PCB板上的过孔的种类及打孔注意事项
- Johnson算法PlantSimulation解决两机器多作业排版问题
- MAC 青花瓷(Charles)爪机HTTPS 抓包
- 美联储加息负面效应外溢
- tkinter浏览器组件
- 循环控制语句--for循环
热门文章
- 如何使用log4j记录日志
- python教程自带数据库_python教程自带数据库 | Python学哪个数据库
- Windows平台下动态链接库的总结
- php mysql 取最小值_php – 根据另一个值更新最小值 – MySql
- body curl 设置post_curl 命令详解
- vlookup练习_大胆合并吧!VLOOKUP坐字法专做单元格合并查找
- php 避免xss_PHP防止XSS注入
- Bash脚本教程之目录堆栈
- mysql加上判断_在mysql中where加if判断
- Slip.js – 在触摸屏上实现 Swipe 对列表重新排序