具体配置如下:<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执行插入的语句完整的打印出来呢,求指点
<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执行插入的语句完整的打印出来呢,求指点
解决方案 »
- 谁能给我讲下 JAVA 打印正三角形和到三角形的原理?
- 紧急求助:关于myEclipse部署问题.web-inf中的lib与buildpath
- JSF 标签commandlink失效
- 客户端调用cxf webservice出错
- dom4j 读取xml文件时遇到的怪问题
- Spring2.5+Struts2.0+hibernate3 在Tomcat5.5中,启动的时候,老是提示noDefClass,怎么回事呀
- 为什么我的tomcat 5.0不能自动加载
- 请教二个用eclipse3.1来做jsp网页的问题,先谢了!
- 在Struts中,如何在formbean中取得多选框的值?
- 关于struts的问题(在线等待,如果你觉的分不够我可以继续在开贴给你分)
- 大哥们帮帮看看错在哪里 hibernate Annotation 老师 学生 的多对多双向
- 注册页面能打开,但是表单连不到servlet
转义,把MDC中的东西读取出来
你说的oracle日志还是别的
这样你试过?不行?
换成
{name},{b}
log4j:ERROR Failed to excute sql
java.sql.SQLException: Invalid SQL statement or JDBC escape, terminating ''' not found.
我的配置文件如下:
log4j.rootLogger=warn,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=1
log4j.appender.db.URL=jdbc\:jtds\:sqlserver\://server\:1434/pcbsyn
log4j.appender.db.driver=net.sourceforge.jtds.jdbc.Driver
log4j.appender.db.user=sa
log4j.appender.db.password=711
log4j.appender.db.sql=insert into logInfo(userId,userName,lclass,lmethod,lTime,llevel,message) values ('%X{userId}','%X{userName}','%C','%M','%d{yyyy-MM-dd HH\:mm\:ss}','%p','%m')
log4j.appender.db.layout=org.apache.log4j.PatternLayout
# log4j.rootCategory=INFO, stdout# Replace the line above if you want to put a log file into the directory
# you start your server fromlog4j.rootLogger=info, DATABASE
log4j.addivity.org.apache=true########################
# JDBC Appender
#######################log4j.appender.DATABASE.Threshold=WARNlog4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.DATABASE.BufferSize=10log4j.appender.DATABASE.URL=jdbc\:oracle\:thin\:@localhost\:1521\:aaalog4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriverlog4j.appender.DATABASE.user=aaalog4j.appender.DATABASE.password=123456log4j.appender.DATABASE.sql=INSERT INTO FLBMXT_LOG(LOG_DATE,LOG_USERID,LOG_THREAD,LOG_LEVEL,LOG_CLASS_METHOD,LOG_MESSAGES,LOG_ID)VALUES ('%d{yyyy-MM-dd HH:mm:ss}','%X{user_id}','%t','%p','%l','%m',1)log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout这是我的log4j.properties配置文件
然后我数据库的LOG_DATE是varchar类型
然后我就报你上面的错:java.sql.SQLException: ORA-00917: 缺失逗号
跪求解决