Skip to content

Commit 7913020

Browse files
author
core-lib
committed
增加日志记录器接口
1 parent ba50bfe commit 7913020

18 files changed

Lines changed: 425 additions & 25 deletions
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package io.sqlman;
2+
3+
/**
4+
* SQL日志记录器
5+
*
6+
* @author Payne 646742615@qq.com
7+
* 2019/5/17 17:59
8+
*/
9+
public interface SqlLogger {
10+
11+
String getName();
12+
13+
SqlLogger.Level getLevel();
14+
15+
boolean isTraceEnabled();
16+
17+
void trace(String msg);
18+
19+
void trace(String format, Object... arguments);
20+
21+
void trace(String msg, Throwable t);
22+
23+
boolean isDebugEnabled();
24+
25+
void debug(String msg);
26+
27+
void debug(String format, Object... arguments);
28+
29+
void debug(String msg, Throwable t);
30+
31+
boolean isInfoEnabled();
32+
33+
void info(String msg);
34+
35+
void info(String format, Object... arguments);
36+
37+
void info(String msg, Throwable t);
38+
39+
boolean isWarnEnabled();
40+
41+
void warn(String msg);
42+
43+
void warn(String format, Object... arguments);
44+
45+
void warn(String msg, Throwable t);
46+
47+
boolean isErrorEnabled();
48+
49+
void error(String msg);
50+
51+
void error(String format, Object... arguments);
52+
53+
void error(String msg, Throwable t);
54+
55+
/**
56+
* 日志级别
57+
*/
58+
enum Level {
59+
TRACE, DEBUG, INFO, WARN, ERROR
60+
}
61+
62+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.sqlman;
2+
3+
/**
4+
* SQL日志记录器供应商
5+
*
6+
* @author Payne 646742615@qq.com
7+
* 2019/5/27 11:03
8+
*/
9+
public interface SqlLoggerSupplier {
10+
11+
/**
12+
* 日志记录器供应
13+
*
14+
* @param clazz 日志记录器所属类
15+
* @return 日志记录器
16+
*/
17+
SqlLogger supply(Class<?> clazz);
18+
19+
/**
20+
* 日志记录器供应
21+
*
22+
* @param name 日志记录器名称
23+
* @return 日志记录器
24+
*/
25+
SqlLogger supply(String name);
26+
27+
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
* @author Payne 646742615@qq.com
99
* 2019/5/24 20:48
1010
*/
11-
public class SqlInfo {
11+
public class SqlNaming {
1212
private final String name;
1313
private final String version;
1414
private final String description;
1515

16-
public SqlInfo(String name, String version, String description) {
16+
public SqlNaming(String name, String version, String description) {
1717
if (name == null) {
1818
throw new IllegalArgumentException("name must not be null");
1919
}
@@ -44,8 +44,8 @@ public String getDescription() {
4444
public boolean equals(Object o) {
4545
if (this == o) return true;
4646
if (o == null || getClass() != o.getClass()) return false;
47-
SqlInfo sqlInfo = (SqlInfo) o;
48-
return Objects.equals(version, sqlInfo.version);
47+
SqlNaming sqlNaming = (SqlNaming) o;
48+
return Objects.equals(version, sqlNaming.version);
4949
}
5050

5151
@Override

src/main/java/io/sqlman/SqlNamingStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ public interface SqlNamingStrategy extends Comparator<String> {
2727
* @return SQL脚本信息
2828
* @throws MalformedNameException SQL脚本资源命名不合法,即{@link this#check(String)}返回{@code false}。
2929
*/
30-
SqlInfo parse(String name) throws MalformedNameException;
30+
SqlNaming parse(String name) throws MalformedNameException;
3131

3232
}

src/main/java/io/sqlman/SqlSourceProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,5 @@ public interface SqlSourceProvider extends Comparator<String> {
5555
* @return SQL脚本信息
5656
* @throws MalformedNameException SQL脚本资源命名不合法,即{@link this#check(String)}返回{@code false}。
5757
*/
58-
SqlInfo parse(String name) throws MalformedNameException;
58+
SqlNaming parse(String name) throws MalformedNameException;
5959
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.sqlman.logger;
2+
3+
import io.sqlman.SqlLogger;
4+
import io.sqlman.SqlLoggerSupplier;
5+
6+
/**
7+
* 抽象的日志记录器供应商
8+
*
9+
* @author Payne 646742615@qq.com
10+
* 2019/5/27 11:28
11+
*/
12+
public abstract class AbstractLoggerSupplier implements SqlLoggerSupplier {
13+
14+
@Override
15+
public SqlLogger supply(Class<?> clazz) {
16+
return supply(clazz == null ? null : clazz.getName());
17+
}
18+
}
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
package io.sqlman.logger;
2+
3+
import io.sqlman.SqlLogger;
4+
import org.slf4j.Logger;
5+
6+
/**
7+
* Slf4j日志记录器
8+
*
9+
* @author Payne 646742615@qq.com
10+
* 2019/5/27 11:20
11+
*/
12+
public class Slf4jLogger implements SqlLogger {
13+
private final Logger logger;
14+
private final SqlLogger.Level level;
15+
16+
public Slf4jLogger(Logger logger) {
17+
this(logger, Level.INFO);
18+
}
19+
20+
public Slf4jLogger(Logger logger, SqlLogger.Level level) {
21+
if (logger == null) {
22+
throw new IllegalArgumentException("logger must not be null");
23+
}
24+
if (level == null) {
25+
throw new IllegalArgumentException("level must not be null");
26+
}
27+
this.logger = logger;
28+
this.level = level;
29+
}
30+
31+
@Override
32+
public String getName() {
33+
return logger.getName();
34+
}
35+
36+
@Override
37+
public Level getLevel() {
38+
return level;
39+
}
40+
41+
@Override
42+
public boolean isTraceEnabled() {
43+
return logger.isTraceEnabled();
44+
}
45+
46+
@Override
47+
public void trace(String msg) {
48+
logger.trace(msg);
49+
}
50+
51+
@Override
52+
public void trace(String format, Object... arguments) {
53+
logger.trace(format, arguments);
54+
}
55+
56+
@Override
57+
public void trace(String msg, Throwable t) {
58+
logger.trace(msg, t);
59+
}
60+
61+
@Override
62+
public boolean isDebugEnabled() {
63+
return logger.isDebugEnabled();
64+
}
65+
66+
@Override
67+
public void debug(String msg) {
68+
logger.debug(msg);
69+
}
70+
71+
@Override
72+
public void debug(String format, Object... arguments) {
73+
logger.debug(format, arguments);
74+
}
75+
76+
@Override
77+
public void debug(String msg, Throwable t) {
78+
logger.debug(msg, t);
79+
}
80+
81+
@Override
82+
public boolean isInfoEnabled() {
83+
return logger.isInfoEnabled();
84+
}
85+
86+
@Override
87+
public void info(String msg) {
88+
logger.info(msg);
89+
}
90+
91+
@Override
92+
public void info(String format, Object... arguments) {
93+
logger.info(format, arguments);
94+
}
95+
96+
@Override
97+
public void info(String msg, Throwable t) {
98+
logger.info(msg, t);
99+
}
100+
101+
@Override
102+
public boolean isWarnEnabled() {
103+
return logger.isWarnEnabled();
104+
}
105+
106+
@Override
107+
public void warn(String msg) {
108+
logger.warn(msg);
109+
}
110+
111+
@Override
112+
public void warn(String format, Object... arguments) {
113+
logger.warn(format, arguments);
114+
}
115+
116+
@Override
117+
public void warn(String msg, Throwable t) {
118+
logger.warn(msg, t);
119+
}
120+
121+
@Override
122+
public boolean isErrorEnabled() {
123+
return logger.isErrorEnabled();
124+
}
125+
126+
@Override
127+
public void error(String msg) {
128+
logger.error(msg);
129+
}
130+
131+
@Override
132+
public void error(String format, Object... arguments) {
133+
logger.error(format, arguments);
134+
}
135+
136+
@Override
137+
public void error(String msg, Throwable t) {
138+
logger.error(msg, t);
139+
}
140+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package io.sqlman.logger;
2+
3+
import io.sqlman.SqlLogger;
4+
import io.sqlman.SqlLoggerSupplier;
5+
import org.slf4j.ILoggerFactory;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
/**
10+
* Slf4j日志记录器供应商
11+
*
12+
* @author Payne 646742615@qq.com
13+
* 2019/5/27 11:19
14+
*/
15+
public class Slf4jLoggerSupplier extends AbstractLoggerSupplier implements SqlLoggerSupplier {
16+
private final ILoggerFactory loggerFactory;
17+
private final SqlLogger.Level level;
18+
19+
public Slf4jLoggerSupplier() {
20+
this(LoggerFactory.getILoggerFactory(), SqlLogger.Level.INFO);
21+
}
22+
23+
public Slf4jLoggerSupplier(ILoggerFactory loggerFactory) {
24+
this(loggerFactory, SqlLogger.Level.INFO);
25+
}
26+
27+
public Slf4jLoggerSupplier(SqlLogger.Level level) {
28+
this(LoggerFactory.getILoggerFactory(), level);
29+
}
30+
31+
public Slf4jLoggerSupplier(ILoggerFactory loggerFactory, SqlLogger.Level level) {
32+
if (loggerFactory == null) {
33+
throw new IllegalArgumentException("loggerFactory must not be null");
34+
}
35+
if (level == null) {
36+
throw new IllegalArgumentException("level must not be null");
37+
}
38+
this.loggerFactory = loggerFactory;
39+
this.level = level;
40+
}
41+
42+
@Override
43+
public SqlLogger supply(String name) {
44+
Logger logger = loggerFactory.getLogger(name);
45+
return new Slf4jLogger(logger, level);
46+
}
47+
48+
public ILoggerFactory getLoggerFactory() {
49+
return loggerFactory;
50+
}
51+
}

src/main/java/io/sqlman/manager/AbstractVersionManager.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.sqlman.exception.DuplicatedVersionException;
55
import io.sqlman.exception.IncorrectSyntaxException;
66
import io.sqlman.exception.MalformedNameException;
7+
import io.sqlman.logger.Slf4jLoggerSupplier;
78
import io.sqlman.provider.ClasspathSourceProvider;
89
import io.sqlman.resolver.DruidScriptResolver;
910
import io.sqlman.support.MySQLDialectSupport;
@@ -26,6 +27,7 @@ public abstract class AbstractVersionManager implements SqlVersionManager {
2627
protected SqlSourceProvider sourceProvider = new ClasspathSourceProvider();
2728
protected SqlScriptResolver scriptResolver = new DruidScriptResolver();
2829
protected SqlDialectSupport dialectSupport = new MySQLDialectSupport();
30+
protected SqlLoggerSupplier loggerSupplier = new Slf4jLoggerSupplier();
2931

3032
protected AbstractVersionManager() {
3133
}
@@ -42,7 +44,8 @@ protected AbstractVersionManager(
4244
JdbcIsolation jdbcIsolation,
4345
SqlSourceProvider sourceProvider,
4446
SqlScriptResolver scriptResolver,
45-
SqlDialectSupport dialectSupport
47+
SqlDialectSupport dialectSupport,
48+
SqlLoggerSupplier loggerSupplier
4649
) {
4750
if (dataSource == null) {
4851
throw new IllegalArgumentException("dataSource must not be null");
@@ -59,11 +62,15 @@ protected AbstractVersionManager(
5962
if (dialectSupport == null) {
6063
throw new IllegalArgumentException("dialectSupport must not be null");
6164
}
65+
if (loggerSupplier == null) {
66+
throw new IllegalArgumentException("loggerSupplier must not be null");
67+
}
6268
this.dataSource = dataSource;
6369
this.jdbcIsolation = jdbcIsolation;
6470
this.sourceProvider = sourceProvider;
6571
this.scriptResolver = scriptResolver;
6672
this.dialectSupport = dialectSupport;
73+
this.loggerSupplier = loggerSupplier;
6774
}
6875

6976
protected <T> T execute(JdbcTransaction<T> transaction) throws SQLException {

0 commit comments

Comments
 (0)