diff --git a/lms/nladmin-system/pom.xml b/lms/nladmin-system/pom.xml index d823fcc49..506e552b6 100644 --- a/lms/nladmin-system/pom.xml +++ b/lms/nladmin-system/pom.xml @@ -452,6 +452,11 @@ easyexcel 2.2.6 + + mysql + mysql-connector-java + 8.0.20 + diff --git a/lms/nladmin-system/src/main/java/org/nl/config/DruidFilter.java b/lms/nladmin-system/src/main/java/org/nl/config/DruidFilter.java new file mode 100644 index 000000000..f885eafdf --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/config/DruidFilter.java @@ -0,0 +1,98 @@ +package org.nl.config; + +import com.alibaba.druid.filter.FilterChain; +import com.alibaba.druid.filter.FilterEventAdapter; +import com.alibaba.druid.proxy.jdbc.JdbcParameter; +import com.alibaba.druid.proxy.jdbc.PreparedStatementProxy; +import com.alibaba.druid.proxy.jdbc.ResultSetProxy; +import com.alibaba.druid.proxy.jdbc.StatementProxy; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.util.JdbcUtils; +import com.alibaba.fastjson.JSON; +import com.mysql.cj.jdbc.result.ResultSetImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.MDC; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/2/10 11:27 上午 + */ +@Slf4j +public class DruidFilter extends FilterEventAdapter { + + @Override + public int preparedStatement_executeUpdate(FilterChain chain, PreparedStatementProxy statement) throws SQLException { + + return super.preparedStatement_executeUpdate(chain, statement); + } + + @Override + public int statement_executeUpdate(FilterChain chain, StatementProxy statement, String sql) throws SQLException { + + return super.statement_executeUpdate(chain, statement, sql); + } + + @Override + protected void statementExecuteAfter(StatementProxy statement, String sql, boolean result) { + String traceId = MDC.get("traceId"); + int size = statement.getParametersSize(); + String executeSql = sql; + int count = 0; + try { + count=statement.getUpdateCount(); + }catch (Exception ex){ } + if (StringUtils.isNotEmpty(traceId) && count>0) { + if (size > 0) { + Collection values = statement.getParameters().values(); + List params = new ArrayList<>(); + for (JdbcParameter value : values) { + params.add(value.getValue()); + } + executeSql = SQLUtils.format(executeSql, JdbcUtils.MYSQL, params); + } + log.info("[----SQL----][update][ SQL: {} ]", executeSql); + } + super.statementExecuteAfter(statement, sql, result); + } + @Override + public ResultSetProxy statement_getResultSet(FilterChain chain, StatementProxy statement) throws SQLException { + ResultSetProxy rs = super.statement_getResultSet(chain, statement); + String executeSql = statement.getLastExecuteSql(); + String traceId = MDC.get("traceId"); + if (StringUtils.isNotEmpty(traceId)){ + int result = 0; + if (rs != null) { + ResultSetImpl rss = rs.getResultSetRaw().unwrap(ResultSetImpl.class); + result = rss.getRows().size(); + } + try { + int size = statement.getParametersSize(); + if (size>0){ + Collection values = statement.getParameters().values(); + List params = new ArrayList<>(); + for (JdbcParameter value : values) { + params.add(value.getValue()); + } + executeSql = SQLUtils.format(executeSql, JdbcUtils.MYSQL, params); + } + }catch (Exception ex){ + log.warn("[-SQL解析异常-][{}]",ex.getMessage()); + } + log.info("[----SQL----][select][执行结果:{}][ SQL: {} ]",result, executeSql); + } + return rs; + } + + + + + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java b/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java index bdd69c14e..63a20d641 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java @@ -116,21 +116,20 @@ public class LogAspect { } } }catch (Exception ex){ - StringBuffer errorInfo = new StringBuffer(); - errorInfo.append(ex.getMessage()).append("\n"); + StringBuffer errorStack = new StringBuffer(); + String errorMsg = ex.getMessage(); int x = 0; StackTraceElement[] stackTrace = ex.getStackTrace(); if (stackTrace!=null && stackTrace.length>0){ - errorInfo.append("---堆栈信息:"); for (StackTraceElement stack : stackTrace) { x++; - errorInfo.append(stack.toString()).append("\n"); + errorStack.append(stack.toString()).append(" | "); if (x>10){ break; } } } - log.error("[--requestError--][请求接口:{}][请求参数:{}]【异常信息 :{}】", url,params, errorInfo.toString()); + log.error("[-requestError-][请求接口:{}]【异常信息:{}】[请求参数:{}][异常堆栈:{}]", url,errorMsg,params, errorStack.toString()); Log log = new Log("ERROR", System.currentTimeMillis() - comming); log.setExceptionDetail(ThrowableUtil.getStackTrace(ex).getBytes()); logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint) joinPoint, log); diff --git a/lms/nladmin-system/src/main/resources/META-INF/druid-filter.properties b/lms/nladmin-system/src/main/resources/META-INF/druid-filter.properties new file mode 100644 index 000000000..9b025c101 --- /dev/null +++ b/lms/nladmin-system/src/main/resources/META-INF/druid-filter.properties @@ -0,0 +1 @@ +druid.filters.DruidFilter=org.nl.config.DruidFilter diff --git a/lms/nladmin-system/src/main/resources/config/application-dev.yml b/lms/nladmin-system/src/main/resources/config/application-dev.yml index 94688b690..d267e00d8 100644 --- a/lms/nladmin-system/src/main/resources/config/application-dev.yml +++ b/lms/nladmin-system/src/main/resources/config/application-dev.yml @@ -23,10 +23,10 @@ spring: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:lms_test2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hl_tb_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # username: ${DB_USER:root} username: ${DB_USER:root} - password: ${DB_PWD:Root.123456} + password: ${DB_PWD:942464Yy} # 初始连接数 initial-size: 5 # 最小连接数 @@ -58,16 +58,17 @@ spring: enabled: true url-pattern: /druid/* reset-enable: false - filter: - stat: - enabled: true - # 记录慢SQL - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true + filters: + DruidFilter,stat +# stat: +# enabled: true +# # 记录慢SQL +# log-slow-sql: true +# slow-sql-millis: 1000 +# merge-sql: true +# wall: +# config: +# multi-statement-allow: true redis: #数据库索引 database: ${REDIS_DB:15} diff --git a/lms/nladmin-system/src/main/resources/config/application-prod.yml b/lms/nladmin-system/src/main/resources/config/application-prod.yml index 385fb963e..6bb7eed6e 100644 --- a/lms/nladmin-system/src/main/resources/config/application-prod.yml +++ b/lms/nladmin-system/src/main/resources/config/application-prod.yml @@ -59,16 +59,17 @@ spring: enabled: true url-pattern: /druid/* reset-enable: false - filter: - stat: - enabled: true - # 记录慢SQL - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true + filters: + DruidFilter,stat +# stat: +# enabled: true +# # 记录慢SQL +# log-slow-sql: true +# slow-sql-millis: 1000 +# merge-sql: true +# wall: +# config: +# multi-statement-allow: true redis: #数据库索引 database: ${REDIS_DB:14}