1

现在我的信息日志只显示 sql 查询?为价值观。您能建议我更改 log4j2.xml 文件以显示值吗?

log4j2.xml:

   <RollingRandomAccessFile name="SQLLOGFILE">
    <PatternLayout>
      <Pattern>%-5p:%d{dd-MMM-yyyy HH:mm:ss,SSS}: %-25t %c : %m%n</Pattern>
    </PatternLayout>
   </RollingRandomAccessFile>

     <AsyncLogger name="jdbc.sqlonly" level="INFO">
       <AppenderRef ref="LOGFILE" level="INFO"/>
     </AsyncLogger>

     <AsyncLogger name="jdbc.audit" level="off"></AsyncLogger>

     <AsyncLogger name="jdbc.resultset" level="off"></AsyncLogger>

     <AsyncLogger name="jdbc.connection" level="DEBUG">
       <AppenderRef ref="CONNECTION"/>
     </AsyncLogger> 
4

2 回答 2

1

如果您的 ORM 供应商是 Hiberante,这是 Spring 框架中默认的,您可以在里面使用以下属性log4j2.xml

  <AsyncLogger name="org.hibernate.SQL" level="DEBUG">
      <AppenderRef ref="LOGFILE"/>
  </AsyncLogger>

  <AsyncLogger name="org.hibernate.type" level="TRACE">
      <AppenderRef ref="LOGFILE"/>
  </AsyncLogger>

上述 2 个属性包括 SQL 正确显示在日志中的所有必要类,包括?占位符内的绑定值。

更具体地说,在 hibernate 中,负责将值放入其中的类?org.hibernate.type.descriptor.sql.BasicBinder. 上述 2 个属性也将此类包含在级别中,因此正确附加Trace了 的绑定值。?

于 2022-02-12T19:40:02.030 回答
0

考虑使用已经以更方便的方式记录查询的数据源代理TTDDYY

于 2022-02-18T13:12:19.867 回答