日期:2014-05-20  浏览次数:21006 次

log4j写入数据库 log4j:ERROR Failed to excute sql java.sql.SQLException: ORA-00917: 缺失
具体配置如下:

<appender name= "access_Log_JDBC" class= "org.apache.log4j.jdbc.JDBCAppender">
  <param name= "Driver" value= "oracle.jdbc.driver.OracleDriver" />
  <param name= "URL" value= "jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:oradb" />
  <param name= "user" value= "XXX" />
  <param name= "password" value= "XXX" />
  <param name= "sql" value= "INSERT INTO SSI_USER_LOG(OPERATE_TIME,USER_NAME,OPERATE_OBJECT,OPERATE_INFO) VALUES (%d,%X{name},%X{b},'%m')"/>
  <param name= "BufferSize" value= "1" />
  </appender> 


调用方式:
  String msg = "b03";
  String name = "u03";
 String b = "b03 "; 
 MDC.put("user", name); 
 MDC.put( "b", b); //和配置文件中的%X{b}对应
 System.out.println(MDC.get("user"));
 SSILogger.accesslog_category.info(msg); //和配置文件中的%m对应 

但是执行后控制台回报 :
  log4j:ERROR Failed to excute sql
java.sql.SQLException: ORA-00917: 缺失逗号

原因已经知道是 %X{name}和%X{b}的问题,但是就是不知道怎么解决,求高手指点,


能不能告诉下,是否可以吧log4j执行插入的语句完整的打印出来呢,求指点


------解决方案--------------------
'%X{name}','%X{b}'
------解决方案--------------------
我记得如果ORACLE语句如果执行出错,会有相应的日志会记录这条语句,去查一下实际执行错误的SQL语句应该可以发现点问题
------解决方案--------------------
'%X{name}','%X{b}'
这样你试过?不行?