配置文件如下:log4j.rootLogger=DEBUG,DATABASE 
    
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.DATABASE.URL=jdbc:oracle:thin:@localhost:1521:cnyxlxwm 
log4j.appender.database.BufferSize=40  
log4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriver 
log4j.appender.DATABASE.user=vio_proof 
log4j.appender.DATABASE.password=vio_proof 
log4j.appender.DATABASE.sql=INSERT INTO PROOF_EXCEPTION(MESSAGE,DATE_HAPPEN) values('%c-%-4r[%t]%-5p%c%x-%m%n',sysdate) 
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout  
log4j.appender.DATABASE.layout.ConversionPattern=-%c-%-4r[%t]%-5p%c%x-%m%n 错误信息如下: 
log4j:ERROR Failed to excute sql 
java.sql.SQLException: ORA-00917: 缺少逗号 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187) 
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:241) 
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543) 
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1477) 
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:888) 
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2030) 
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1950) 
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2591) 
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:999) 
at org.apache.log4j.jdbc.JDBCAppender.execute(JDBCAppender.java:178) 
at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:250) 
at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:146) 
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) 
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) 
at org.apache.log4j.Category.callAppenders(Category.java:203) 
at org.apache.log4j.Category.forcedLog(Category.java:388) 
at org.apache.log4j.Category.log(Category.java:853) 
at org.apache.commons.logging.impl.Log4JLogger.info(Log4JLogger.java:133) 
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1014) 
at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152) 
at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1168) 
at com.citic.util.quartz.OnLineCountListener.contextInitialized(OnLineCountListener.java:55) 
at com.caucho.server.webapp.Application.start(Application.java:1597) 
at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:621) 
at com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72) 
at com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:509) 
at com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:158) 
at com.caucho.server.webapp.ApplicationContainer.start(ApplicationContainer.java:652) 
at com.caucho.server.host.Host.start(Host.java:385) 
at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:621) 
at com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72) 
at com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:509) 
at com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:158) 
at com.caucho.server.host.HostContainer.start(HostContainer.java:501) 
at com.caucho.server.resin.ServletServer.start(ServletServer.java:977) 
at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:621) 
at com.caucho.server.deploy.AbstractDeployControllerStrategy.start(AbstractDeployControllerStrategy.java:56) 
at com.caucho.server.deploy.DeployController.start(DeployController.java:517) 
at com.caucho.server.resin.ResinServer.start(ResinServer.java:485) 
at com.caucho.server.resin.Resin.init(Resin.java) 
at com.caucho.server.resin.Resin.main(Resin.java:624) 检查数据库 发现日志内容一直在写入。

解决方案 »

  1.   

    存入了那就是sql没错呗..单个字符匹配有问题?
      

  2.   

    八成是生成的 SQL 被日志信息本身破坏了。
      

  3.   

    你日志写的东西太多了吧,debug的都写进去干什么
      

  4.   

    第一点:java.sql.SQLException: ORA-00917: 缺少逗号 
    如果有其他数据插入表里,那就是语句里面本身就带有''单引号,可以先replace掉再寸
    第二点:
    一直在往数据库里写日志信息 
    后边的业务都不执行了都……
    那可能是你的log4j的级别设置太低了,日志太多,所以就不执行后面的业务了!