From 4ee64ed1ef1796d8e11bc920bfb6e0931397ca3f Mon Sep 17 00:00:00 2001 From: redkale Date: Thu, 6 Jun 2024 18:11:40 +0800 Subject: [PATCH] DataSqlMonitor --- .../redkale/source/AbstractDataSqlSource.java | 8 +++++++- .../java/org/redkale/source/DataSqlMonitor.java | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/redkale/source/DataSqlMonitor.java diff --git a/src/main/java/org/redkale/source/AbstractDataSqlSource.java b/src/main/java/org/redkale/source/AbstractDataSqlSource.java index f810b7b58..f5313e44f 100644 --- a/src/main/java/org/redkale/source/AbstractDataSqlSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSqlSource.java @@ -70,6 +70,9 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource @Resource(required = false) protected DataNativeSqlParser nativeSqlParser; + @Resource(required = false) + protected DataSqlMonitor sqlMonitor; + protected BiFunction sqlFormatter; protected BiConsumer errorCompleteConsumer = (r, t) -> { @@ -385,8 +388,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource } protected void slowLog(long startTime, String... sqls) { + long cost = System.currentTimeMillis() - startTime; if (slowmsError > 0 || slowmsWarn > 0) { - long cost = System.currentTimeMillis() - startTime; if (slowmsError > 0 && cost > slowmsError) { logger.log( Level.SEVERE, @@ -399,6 +402,9 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource + " ms, content: " + Arrays.toString(sqls)); } } + if (sqlMonitor != null) { + sqlMonitor.visitCostTime(this, cost, sqls); + } } protected String parseNotExistTableName(SQLException e) { diff --git a/src/main/java/org/redkale/source/DataSqlMonitor.java b/src/main/java/org/redkale/source/DataSqlMonitor.java new file mode 100644 index 000000000..73dcc0ff9 --- /dev/null +++ b/src/main/java/org/redkale/source/DataSqlMonitor.java @@ -0,0 +1,17 @@ +/* + +*/ + +package org.redkale.source; + +/** + * DataSource的监控借口 + * + *

详情见: https://redkale.org + * + * @author zhangjx + * @since 2.8.0 + */ +public interface DataSqlMonitor { + public void visitCostTime(DataSqlSource source, long costMills, String... sqls); +}