Log4J写入到SQL SERVER数据库中, 单引号错误解决办法

来源:互联网 发布:淘宝服装店铺名称 编辑:程序博客网 时间:2024/05/21 21:37

Log4j之重写JDBCAppender

新建类:MyLoggingEvent , 来转换单引号

/** *  */package com.hr.core;import org.apache.log4j.Category;import org.apache.log4j.Priority;import org.apache.log4j.spi.LoggingEvent;/** * @author zhong * */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);    // TODO Auto-generated constructor stub    }    public String getThreadName() {        // TODO Auto-generated method stub        String thrdName=super.getThreadName();        if(thrdName.indexOf("'")!=-1){        thrdName=thrdName.replaceAll("'", "''");        }        return thrdName;    }    public String getRenderedMessage() {        String msg=super.getRenderedMessage();        if(msg.indexOf("'")!=-1){        msg=msg.replaceAll("'", "''");        }        return msg;    }}

新建类:MyJDBCAppender , 来解发重写方法的调用

/** *  */package com.hr.core;import org.apache.log4j.Category;import org.apache.log4j.Priority;import org.apache.log4j.jdbc.JDBCAppender;import org.apache.log4j.spi.LoggingEvent;/** * @author zhong * */public class MyJDBCAppender extends JDBCAppender {    protected String getLogStatement(LoggingEvent event) {        String fqnOfCategoryClass=event.fqnOfCategoryClass;        Category logger=Category.getRoot();        Priority level=event.level;        Object message=event.getMessage();        Throwable throwable=null;        MyLoggingEvent bEvent=new MyLoggingEvent(fqnOfCategoryClass,logger,level,message,throwable);        return super.getLogStatement(bEvent);    }}

附: log4j.properties 配置

log4j.rootCategory=INFO,A3,Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS}%m%nlog4j.logger.Java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=debug,stdout,logfile,A3 log4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=${catalina.home}/logs/hr_log.loglog4j.appender.R.MaxFileSize=1024KBlog4j.appender.R.MaxBackupIndex=10log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n#log4j.appender.A3=com.hr.core.MyJDBCAppenderlog4j.appender.A3.URL=jdbc\:sqlserver\://localhost\:1433;DatabaseName\=zhaochi_1log4j.appender.A3.driver=com.microsoft.sqlserver.jdbc.SQLServerDriverlog4j.appender.A3.user=salog4j.appender.A3.password=pwterp#log4j.appender.A3.layout=org.apache.log4j.PatternLayoutlog4j.appender.A3.layout.ConversionPattern=INSERT INTO log4j(createDate,thread,grade,class,message) values('%d','%t','%-5p','%c','%m')
0 0
原创粉丝点击