diff --git a/src/main/java/org/redkale/source/DataSqlSource.java b/src/main/java/org/redkale/source/DataSqlSource.java index e84562859..e15f52b26 100644 --- a/src/main/java/org/redkale/source/DataSqlSource.java +++ b/src/main/java/org/redkale/source/DataSqlSource.java @@ -142,7 +142,7 @@ public abstract class DataSqlSource extends AbstractDataSource implements Functi String newValue = decryptProperty(event.name(), event.newValue().toString()); allEvents.add(ResourceEvent.create(event.name(), newValue, event.oldValue())); newProps.put(event.name(), newValue); - sb.append("DataSource(name=").append(resourceName()).append(") the ").append(event.name()).append(" resource changed\r\n"); + sb.append("DataSource(name=").append(resourceName()).append(") change '").append(event.name()).append("' to '").append(event.coverNewValue()).append("'\r\n"); } updateOneResourceChange(newProps, allEvents.toArray(new ResourceEvent[allEvents.size()])); for (ResourceEvent event : allEvents) { @@ -165,7 +165,7 @@ public abstract class DataSqlSource extends AbstractDataSource implements Functi writeEvents.add(ResourceEvent.create(newName, newValue, event.oldValue())); newWriteProps.put(event.name(), newValue); } - sb.append("DataSource(name=").append(resourceName()).append(") the ").append(event.name()).append(" resource changed\r\n"); + sb.append("DataSource(name=").append(resourceName()).append(") change '").append(event.name()).append("' to '").append(event.coverNewValue()).append("'\r\n"); } if (!readEvents.isEmpty()) { updateReadResourceChange(newReadProps, readEvents.toArray(new ResourceEvent[readEvents.size()])); diff --git a/src/main/java/org/redkale/util/ResourceEvent.java b/src/main/java/org/redkale/util/ResourceEvent.java index 051142c6e..3ff1f25b5 100644 --- a/src/main/java/org/redkale/util/ResourceEvent.java +++ b/src/main/java/org/redkale/util/ResourceEvent.java @@ -2,6 +2,9 @@ */ package org.redkale.util; +import java.util.function.Predicate; +import java.util.regex.Pattern; + /** * 详情见: https://redkale.org * @@ -18,6 +21,14 @@ public interface ResourceEvent { public T oldValue(); + default String coverNewValue() { + return ResourceChangeEvent.cover(newValue()); + } + + default String coverOldValue() { + return ResourceChangeEvent.cover(oldValue()); + } + public static boolean containsName(ResourceEvent[] events, String... names) { if (events == null || events.length == 0 || names.length == 0) return false; for (ResourceEvent event : events) { @@ -32,12 +43,22 @@ public interface ResourceEvent { public static class ResourceChangeEvent implements ResourceEvent { + private static final Predicate numRegx = Pattern.compile("^(\\-|\\+)?\\d+(\\.\\d+)?$").asPredicate(); + protected String name; protected T newValue; protected T oldValue; + static String cover(T val) { + if (val == null) return null; + String str = val.toString(); + if (str.length() <= 4) return str; + if (numRegx.test(str)) return str; + return str.substring(0, 2) + "***" + str.substring(str.length() - 2); + } + @ConstructorParameters({"name", "newValue", "oldValue"}) public ResourceChangeEvent(String name, T newValue, T oldValue) { this.name = name;