Skip to content
This repository was archived by the owner on Oct 24, 2020. It is now read-only.

Commit 0788344

Browse files
committed
Add the log configuration
1 parent 220dc7d commit 0788344

File tree

6 files changed

+211
-2
lines changed

6 files changed

+211
-2
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ quarkus.doma.batch-size=0
3232
quarkus.doma.fetch-size=0
3333
quarkus.doma.max-rows=0
3434
quarkus.doma.query-timeout=0
35+
36+
quarkus.doma.log.sql=true
37+
quarkus.doma.log.dao=true
38+
quarkus.doma.log.closing-failure=true
3539
```
3640

3741
The above properties are all optional.

runtime/src/main/java/org/seasar/doma/quarkus/runtime/DomaConfiguration.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.seasar.doma.quarkus.runtime;
22

3+
import io.quarkus.runtime.annotations.ConfigDocSection;
34
import io.quarkus.runtime.annotations.ConfigItem;
45
import io.quarkus.runtime.annotations.ConfigRoot;
56
import java.util.Optional;
@@ -58,6 +59,9 @@ public class DomaConfiguration {
5859
@ConfigItem(defaultValue = "0")
5960
public int queryTimeout;
6061

62+
/** */
63+
@ConfigItem @ConfigDocSection public LogConfiguration log;
64+
6165
@Override
6266
public String toString() {
6367
return "DomaConfiguration{"
@@ -69,7 +73,7 @@ public String toString() {
6973
+ naming
7074
+ ", exceptionSqlLogType="
7175
+ exceptionSqlLogType
72-
+ ", dataSourceName="
76+
+ ", datasourceName="
7377
+ datasourceName
7478
+ ", batchSize="
7579
+ batchSize
@@ -79,6 +83,8 @@ public String toString() {
7983
+ maxRows
8084
+ ", queryTimeout="
8185
+ queryTimeout
86+
+ ", log="
87+
+ log
8288
+ '}';
8389
}
8490

runtime/src/main/java/org/seasar/doma/quarkus/runtime/DomaProducer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class DomaProducer {
3939
private volatile int fetchSize;
4040
private volatile int maxRows;
4141
private volatile int queryTimeout;
42+
private volatile LogConfiguration logConfiguration;
4243

4344
public void setSqlFileRepository(SqlFileRepository sqlFileRepository) {
4445
this.sqlFileRepository = Objects.requireNonNull(sqlFileRepository);
@@ -80,6 +81,10 @@ public void setQueryTimeout(int queryTimeout) {
8081
this.queryTimeout = queryTimeout;
8182
}
8283

84+
public void setLogConfiguration(LogConfiguration logConfiguration) {
85+
this.logConfiguration = Objects.requireNonNull(logConfiguration);
86+
}
87+
8388
@ApplicationScoped
8489
@DefaultBean
8590
Dialect dialect() {
@@ -101,7 +106,7 @@ ScriptFileLoader scriptFileLoader() {
101106
@ApplicationScoped
102107
@DefaultBean
103108
JdbcLogger jdbcLogger() {
104-
return ConfigSupport.defaultJdbcLogger;
109+
return new JBossJdbcLogger(Objects.requireNonNull(logConfiguration));
105110
}
106111

107112
@ApplicationScoped

runtime/src/main/java/org/seasar/doma/quarkus/runtime/DomaRecorder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public BeanContainerListener configure(DomaConfiguration configuration) {
3030
producer.setFetchSize(configuration.fetchSize);
3131
producer.setMaxRows(configuration.maxRows);
3232
producer.setQueryTimeout(configuration.queryTimeout);
33+
producer.setLogConfiguration(configuration.log);
3334
};
3435
}
3536

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
package org.seasar.doma.quarkus.runtime;
2+
3+
import java.sql.SQLException;
4+
import java.util.function.Supplier;
5+
import org.jboss.logging.Logger;
6+
import org.seasar.doma.jdbc.AbstractJdbcLogger;
7+
import org.seasar.doma.jdbc.Sql;
8+
import org.seasar.doma.jdbc.SqlExecutionSkipCause;
9+
10+
public class JBossJdbcLogger extends AbstractJdbcLogger<Logger.Level> {
11+
12+
private final LogConfiguration logConfiguration;
13+
14+
JBossJdbcLogger() {
15+
super(Logger.Level.DEBUG);
16+
this.logConfiguration = new LogConfiguration();
17+
}
18+
19+
public JBossJdbcLogger(LogConfiguration logConfiguration) {
20+
super(logConfiguration.level);
21+
this.logConfiguration = logConfiguration;
22+
}
23+
24+
@Override
25+
protected void log(
26+
Logger.Level level,
27+
String callerClassName,
28+
String callerMethodName,
29+
Throwable throwable,
30+
Supplier<String> messageSupplier) {
31+
Logger logger = Logger.getLogger(callerClassName);
32+
logger.log(level, messageSupplier.get(), throwable);
33+
}
34+
35+
@Override
36+
protected void logSql(
37+
String callerClassName,
38+
String callerMethodName,
39+
Sql<?> sql,
40+
Logger.Level level,
41+
Supplier<String> messageSupplier) {
42+
if (logConfiguration.sql) {
43+
Logger logger = Logger.getLogger(callerClassName);
44+
logger.info(messageSupplier.get());
45+
} else {
46+
super.logSql(callerClassName, callerMethodName, sql, level, messageSupplier);
47+
}
48+
}
49+
50+
@Override
51+
protected void logDaoMethodEntering(
52+
String callerClassName,
53+
String callerMethodName,
54+
Object[] args,
55+
Logger.Level level,
56+
Supplier<String> messageSupplier) {
57+
if (logConfiguration.dao) {
58+
Logger logger = Logger.getLogger(callerClassName);
59+
logger.info(messageSupplier.get());
60+
} else {
61+
super.logDaoMethodEntering(callerClassName, callerMethodName, args, level, messageSupplier);
62+
}
63+
}
64+
65+
@Override
66+
protected void logDaoMethodExiting(
67+
String callerClassName,
68+
String callerMethodName,
69+
Object result,
70+
Logger.Level level,
71+
Supplier<String> messageSupplier) {
72+
if (logConfiguration.dao) {
73+
Logger logger = Logger.getLogger(callerClassName);
74+
logger.info(messageSupplier.get());
75+
} else {
76+
super.logDaoMethodExiting(callerClassName, callerMethodName, result, level, messageSupplier);
77+
}
78+
}
79+
80+
@Override
81+
protected void logDaoMethodThrowing(
82+
String callerClassName,
83+
String callerMethodName,
84+
RuntimeException e,
85+
Logger.Level level,
86+
Supplier<String> messageSupplier) {
87+
if (logConfiguration.dao) {
88+
Logger logger = Logger.getLogger(callerClassName);
89+
logger.info(messageSupplier.get(), e);
90+
} else {
91+
super.logDaoMethodThrowing(callerClassName, callerMethodName, e, level, messageSupplier);
92+
}
93+
}
94+
95+
@Override
96+
protected void logSqlExecutionSkipping(
97+
String callerClassName,
98+
String callerMethodName,
99+
SqlExecutionSkipCause cause,
100+
Logger.Level level,
101+
Supplier<String> messageSupplier) {
102+
if (logConfiguration.dao) {
103+
Logger logger = Logger.getLogger(callerClassName);
104+
logger.info(messageSupplier.get());
105+
} else {
106+
super.logSqlExecutionSkipping(
107+
callerClassName, callerMethodName, cause, level, messageSupplier);
108+
}
109+
}
110+
111+
@Override
112+
protected void logConnectionClosingFailure(
113+
String callerClassName,
114+
String callerMethodName,
115+
SQLException e,
116+
Logger.Level level,
117+
Supplier<String> messageSupplier) {
118+
if (logConfiguration.closingFailure) {
119+
Logger logger = Logger.getLogger(callerClassName);
120+
logger.info(messageSupplier.get(), e);
121+
} else {
122+
super.logConnectionClosingFailure(
123+
callerClassName, callerMethodName, e, level, messageSupplier);
124+
}
125+
}
126+
127+
@Override
128+
protected void logStatementClosingFailure(
129+
String callerClassName,
130+
String callerMethodName,
131+
SQLException e,
132+
Logger.Level level,
133+
Supplier<String> messageSupplier) {
134+
if (logConfiguration.closingFailure) {
135+
Logger logger = Logger.getLogger(callerClassName);
136+
logger.info(messageSupplier.get(), e);
137+
} else {
138+
139+
super.logStatementClosingFailure(
140+
callerClassName, callerMethodName, e, level, messageSupplier);
141+
}
142+
}
143+
144+
@Override
145+
protected void logResultSetClosingFailure(
146+
String callerClassName,
147+
String callerMethodName,
148+
SQLException e,
149+
Logger.Level level,
150+
Supplier<String> messageSupplier) {
151+
if (logConfiguration.closingFailure) {
152+
Logger logger = Logger.getLogger(callerClassName);
153+
logger.info(messageSupplier.get(), e);
154+
} else {
155+
super.logResultSetClosingFailure(
156+
callerClassName, callerMethodName, e, level, messageSupplier);
157+
}
158+
}
159+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package org.seasar.doma.quarkus.runtime;
2+
3+
import io.quarkus.runtime.annotations.ConfigGroup;
4+
import io.quarkus.runtime.annotations.ConfigItem;
5+
import org.jboss.logging.Logger;
6+
7+
@ConfigGroup
8+
public class LogConfiguration {
9+
10+
/** */
11+
@ConfigItem(defaultValue = "DEBUG")
12+
public Logger.Level level = Logger.Level.DEBUG;
13+
14+
/** */
15+
@ConfigItem public boolean sql;
16+
17+
/** */
18+
@ConfigItem public boolean dao;
19+
20+
/** */
21+
@ConfigItem public boolean closingFailure;
22+
23+
@Override
24+
public String toString() {
25+
return "DomaConfigurationLog{"
26+
+ "sql="
27+
+ sql
28+
+ ", dao="
29+
+ dao
30+
+ ", closingFailure="
31+
+ closingFailure
32+
+ '}';
33+
}
34+
}

0 commit comments

Comments
 (0)