技术文章

o2oa/o2server内存中的java对象通过openjpa进行转换,实现数据库适配,再通过ali druid获取数据库连接池,最后访问数据库.
在openjpa,druid,database三个层次均可以获取到执行的sql statement,比较方便的位置是在druid获取最终执行的sql statment.
1 . 在commons/log4j2.xml中增加
<Logger name="druid.sql.Statement" level="DEBUG" additivity="true"></Logger>
配置后如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration name="DefaultLogger" status="INFO">
<Appenders>
<RollingRandomAccessFile name="outFile" fileName="logs/out.log" filePattern="logs/out.%d{yyyy-MM-dd}.%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %p %c - %m%n" charset="UTF-8" />
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="logs" maxDepth="1">
<IfFileName glob="out.*.*.log.gz" />
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="WARN">
<AppenderRef ref="outFile" />
</Root>
<Logger name="System.out" level="INFO" additivity="false">
<appender-ref ref="outFile" />
</Logger>
<Logger name="System.err" level="INFO" additivity="false">
<appender-ref ref="outFile" />
</Logger>
<Logger name="com.x" level="INFO" additivity="true"></Logger>
<Logger name="druid.sql.Statement" level="DEBUG" additivity="true"></Logger>
</Loggers>
</Configuration>
2. 在连接池中启用druid过滤,对应配置文件:"statFilter": "stat,log4j2"
"traceLogEnable": true
"statEnable": true
[
{
"url": "jdbc:gbasedbt-sqli://172.16.91.41:10603/x:GBASEDBTSERVER=ol_gbasedbt1210",
"username": "gbasedbt",
"password": "password",
"driverClassName": "com.gbasedbt.jdbc.Driver",
"includes": [],
"excludes": [],
"maxTotal": 200,
"enable": true,
"testConnectionOnCheckin": false,
"testConnectionOnCheckout": false,
"statEnable": true,
"statFilter": "stat,log4j2",
"traceLogEnable": true
}
]重启后就可以在日志中看到执行的sql了.
执行语句:

这里执行的语句是druid执行的语句,和实际执行的语句略有区别

上一篇:o2server配置外部存储
下一篇:数据迁移