技术文章
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配置外部存储
下一篇:数据迁移