技术文章

当前位置:首页>帮助手册>技术文章

o2server启用数据sql语句跟踪调试(打印sql执行语句)

时间:2022-09-28   

o2server启用数据sql语句跟踪调试(打印sql执行语句)

o2oa/o2server内存中的java对象通过openjpa进行转换,实现数据库适配,再通过ali druid获取数据库连接池,最后访问数据库.

数据库访问过程

访问过程.png


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了.

执行语句:

log.png


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

timestamp.png





上一篇:o2server配置外部存储

下一篇:数据迁移