log4j JDBCAppender 消息中有单引号 BUG

来源:互联网 发布:观察者手机间谍软件 编辑:程序博客网 时间:2024/05/22 05:49

用log4j的JDBCAppender  输出到数据库如果 消息中有单引号,就会报SQLException。

解决办法就是重写JDBCAppender

1.新建类MyLoggingEvent

package com.ikuboo.custom;import org.apache.log4j.Category;import org.apache.log4j.Priority;import org.apache.log4j.spi.LoggingEvent;/** * @ClassName:MyLoggingEvent.java * @Description:重写,替换message 单引号为 转义符 * @author:Yuan * @version:V1.0 * @Date:2016年6月7日 上午10:51:38 */public class MyLoggingEvent extends LoggingEvent{private static final long serialVersionUID = -1405129465403337629L;public MyLoggingEvent(String fqnOfCategoryClass, Category logger, Priority level, Object message, Throwable throwable){super(fqnOfCategoryClass, logger, level, message, throwable);}@Overridepublic String getThreadName(){String thrdName = super.getThreadName();if (thrdName.indexOf("'") != -1){thrdName = thrdName.replaceAll("'", "''");}return thrdName;}@Overridepublic String getRenderedMessage(){String msg = super.getRenderedMessage();if (msg.indexOf("'") != -1){msg = msg.replaceAll("'", "''");}return msg;}}

2.新建类MyJDBCAppender

package com.ikuboo.custom;import org.apache.log4j.Category;import org.apache.log4j.Priority;import org.apache.log4j.spi.LoggingEvent;/** * @ClassName:MyLoggingEvent.java * @Description:重写,替换message 单引号为 转义符 * @author:Yuan * @version:V1.0 * @Date:2016年6月7日 上午10:51:38 */public class MyLoggingEvent extends LoggingEvent{private static final long serialVersionUID = -1405129465403337629L;public MyLoggingEvent(String fqnOfCategoryClass, Category logger, Priority level, Object message, Throwable throwable){super(fqnOfCategoryClass, logger, level, message, throwable);}@Overridepublic String getThreadName(){String thrdName = super.getThreadName();if (thrdName.indexOf("'") != -1){thrdName = thrdName.replaceAll("'", "''");}return thrdName;}@Overridepublic String getRenderedMessage(){String msg = super.getRenderedMessage();if (msg.indexOf("'") != -1){msg = msg.replaceAll("'", "''");}return msg;}}


3.修改log4j.properties

            log4j.appender.db=com.ikuboo.custom.MyJDBCAppender




0 0