diff --git a/zlt-business/user-center/src/main/resources/application.yml b/zlt-business/user-center/src/main/resources/application.yml
index bff4c5bdf80613a92fef06a87fa0d2aae87ea980..bfc32371aecc7cc059104280047173e09e58d64b 100644
--- a/zlt-business/user-center/src/main/resources/application.yml
+++ b/zlt-business/user-center/src/main/resources/application.yml
@@ -37,4 +37,10 @@ zlt:
- com.central.user.mapper.SysRoleMapper.findAll
#审计日志
# audit-log:
-# enabled: true
\ No newline at end of file
+# enabled: true
+# log-type: db
+# datasource:
+# driver-class-name: com.mysql.cj.jdbc.Driver
+# jdbc-url: jdbc:mysql://${zlt.datasource.ip}:3306/logger-center?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
+# username: ${zlt.datasource.username}
+# password: ${zlt.datasource.password}
\ No newline at end of file
diff --git a/zlt-commons/zlt-log-spring-boot-starter/pom.xml b/zlt-commons/zlt-log-spring-boot-starter/pom.xml
index bd48453751057b0983fc1cb7bac283d857417735..8272da1263a9daf8af791881925ecd9dbfb360eb 100644
--- a/zlt-commons/zlt-log-spring-boot-starter/pom.xml
+++ b/zlt-commons/zlt-log-spring-boot-starter/pom.xml
@@ -52,5 +52,10 @@
+ * Blog: https://blog.csdn.net/zlt2000 + * Github: https://github.com/zlt2000 + */ +@Setter +@Getter +public class LogDbProperties extends HikariConfig { +} diff --git a/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/service/impl/DbAuditServiceImpl.java b/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/service/impl/DbAuditServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..0d73529bedeadca7e65705d8ad4ba240ea26b31d --- /dev/null +++ b/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/service/impl/DbAuditServiceImpl.java @@ -0,0 +1,69 @@ +package com.central.log.service.impl; + +import com.central.log.model.Audit; +import com.central.log.properties.AuditLogProperties; +import com.central.log.service.IAuditService; +import com.zaxxer.hikari.HikariDataSource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.scheduling.annotation.Async; + +import javax.annotation.PostConstruct; +import javax.sql.DataSource; + +/** + * 审计日志实现类-数据库 + * + * @author zlt + * @date 2020/2/8 + *
+ * Blog: https://blog.csdn.net/zlt2000 + * Github: https://github.com/zlt2000 + */ +@Slf4j +@ConditionalOnProperty(name = "zlt.audit-log.log-type", havingValue = "db") +@ConditionalOnClass(JdbcTemplate.class) +public class DbAuditServiceImpl implements IAuditService { + private static final String INSERT_SQL = " insert into sys_logger " + + " (application_name, class_name, method_name, user_id, user_name, client_id, operation, timestamp) " + + " values (?,?,?,?,?,?,?,?)"; + + private final JdbcTemplate jdbcTemplate; + + public DbAuditServiceImpl(AuditLogProperties auditLogProperties, DataSource dataSource) { + //优先使用配置的日志数据源,否则使用默认的数据源 + if (StringUtils.isNotEmpty(auditLogProperties.getDatasource().getJdbcUrl())) { + dataSource = new HikariDataSource(auditLogProperties.getDatasource()); + } + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + @PostConstruct + public void init() { + String sql = "CREATE TABLE IF NOT EXISTS `sys_logger` (\n" + + " `id` int(11) NOT NULL AUTO_INCREMENT,\n" + + " `application_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '应用名',\n" + + " `class_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类名',\n" + + " `method_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '方法名',\n" + + " `user_id` int(11) NULL COMMENT '用户id',\n" + + " `user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '用户名',\n" + + " `client_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '租户id',\n" + + " `operation` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '操作信息',\n" + + " `timestamp` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建时间',\n" + + " PRIMARY KEY (`id`) USING BTREE\n" + + ") ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;"; + this.jdbcTemplate.execute(sql); + } + + @Async + @Override + public void save(Audit audit) { + this.jdbcTemplate.update(INSERT_SQL + , audit.getApplicationName(), audit.getClassName(), audit.getMethodName() + , audit.getUserId(), audit.getUserName(), audit.getClientId() + , audit.getOperation(), audit.getTimestamp()); + } +} diff --git a/zlt-commons/zlt-log-spring-boot-starter/src/main/resources/META-INF/spring.factories b/zlt-commons/zlt-log-spring-boot-starter/src/main/resources/META-INF/spring.factories index e8280140efb690a3b61f5384e23c6fe223a9d817..9fbeb78f7863f614a610f4b7f6b7816892d6a4d6 100644 --- a/zlt-commons/zlt-log-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/zlt-commons/zlt-log-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -4,4 +4,5 @@ com.central.log.config.TtlMDCAdapterInitializer org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.central.log.config.LogAutoConfigure,\ com.central.log.service.impl.LoggerAuditServiceImpl,\ +com.central.log.service.impl.DbAuditServiceImpl,\ com.central.log.aspect.AuditLogAspect diff --git a/zlt-doc/sql/logger-center.sql b/zlt-doc/sql/logger-center.sql new file mode 100644 index 0000000000000000000000000000000000000000..7e7fa71da7bc7f4b6e8a35dedd77935182dacf2d --- /dev/null +++ b/zlt-doc/sql/logger-center.sql @@ -0,0 +1,19 @@ +CREATE DATABASE IF NOT EXISTS `logger-center` DEFAULT CHARACTER SET = utf8; +Use `logger-center`; + +-- ---------------------------- +-- Table structure for t_logger +-- ---------------------------- +DROP TABLE IF EXISTS `sys_logger`; +CREATE TABLE `sys_logger` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `application_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '应用名', + `class_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类名', + `method_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '方法名', + `user_id` int(11) NULL COMMENT '用户id', + `user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '用户名', + `client_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '租户id', + `operation` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '操作信息', + `timestamp` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; \ No newline at end of file