log4j.properties我这么写的:
log4j.rootLogger=INFO,A1log4j.appender.A1=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A1.BufferSize=40
log4j.appender.A1.Driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
log4j.appender.A1.URL=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SupplierBalance
log4j.appedner.A1.User=sa
log4j.appedner.A1.password=dsd_dsdn
/*----------------------------------------
log4j.appender.A1.layout=test.TestJDBCLayout/*--------TestJDBCLayout-----
public class TestJDBCLayout extends Layout {    
    public String format(LoggingEvent event) {
        //layout由你自己拼
        String layout="insert into ctest (name) values ('"+ event.getMessage() +"')";
        return layout;
    }    public boolean ignoresThrowable() {
        return false;  //To change body of implemented methods use File | Settings | File Templates.
    }    public void activateOptions() {
        //To change body of implemented methods use File | Settings | File Templates.
    }
}

解决方案 »

  1.   

    回复人: niuji() ( ) 信誉:100  2004-10-09 15:10:00  得分: 0  
     
     
       改表结构或用数据库的一些内置函数
     
     
    能够具体一点么?你的意思是表结构不对?就是在LOG4J这边不能进行控制么?
      

  2.   

    回复人: cxqpfan(菜鸟) ( ) 信誉:98 呵呵,你的方法也是对表里的一个字段进行insert啊?我现在想用%m得到2个传过来的值怎么办?
      

  3.   

    改表结构的意思是把所有的log写到表的一个字段里。内置函数么比如类似于substring这样的,假设名字是sub:
    log4j.appedner.A1.layout.ConversionPattern=INSERT INTO BLOG(OH,OT,OM) values(sub('%m',0,4),getdate(),sub('%m',4))
      

  4.   

    回复人: niuji() ( ) 信誉:100  2004-10-10 14:50:00  得分: 0  
     
     
       改表结构的意思是把所有的log写到表的一个字段里。内置函数么比如类似于substring这样的,假设名字是sub:
    log4j.appedner.A1.layout.ConversionPattern=INSERT INTO BLOG(OH,OT,OM) values(sub('%m',0,4),getdate(),sub('%m',4))--------------------------------------
    谢谢您的回复先。呵呵这语句的意思是 : 把%m的前4个字符放到OH字段中,把%m后面的字符放到OM中去么?我这样做是不是就可以了?
    log4j.appedner.A1.layout.ConversionPattern=INSERT INTO BLOG(OH,OT,OM) values(substring('%m',0,6),getdate(),substring('%m',6))//用户ID的位数都为固定的6位...然后我在输出的时候:logger.infor(userID+"message");
      
     
      

  5.   

    呵呵,这里我弄明白了!
    可以在库里存2个字段...
    log4j.appedner.A1.layout.ConversionPattern=INSERT INTO BLOG(OH,OT,OM) values(substring('%m',0,6),getdate(),substring('%m',6,20))--------------------------------------
    values(substring('%m',0,6),getdate(),substring('%m',6,20))这里的0,6 是说从第0个字符到第6个字符
    6,20  是说从第6个字符到第20个字符如果谁有需要我就把配置的log文件发上来,大家一起学习...
      

  6.   

    log4j.properties我这么写的:
    log4j.rootLogger=INFO,A1log4j.appender.A1=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.A1.BufferSize=40
    log4j.appender.A1.Driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
    log4j.appender.A1.URL=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SupplierBalance
    log4j.appedner.A1.User=sa
    log4j.appedner.A1.password=dsd_dsdn
    /*----------------------------------------
    log4j.appender.A1.layout=test.TestJDBCLayout/*--------TestJDBCLayout-----
    public class TestJDBCLayout extends Layout {    
        public String format(LoggingEvent event) {
            //layout由你自己拼
            LogEntity entity = (LogEntity)enent.getMessage();
            String layout="insert into ctest (logid,logmessage) values ("+entity.getLogId+"'"+ entity.getLogMessage +"')";
            return layout;
        }    public boolean ignoresThrowable() {
            return false;  //To change body of implemented methods use File | Settings | File Templates.
        }    public void activateOptions() {
            //To change body of implemented methods use File | Settings | File Templates.
        }
    }
    public class LogEntity{
        private long logid;
        private String logmessage; 
        //get and set 方法不写了
    }public class TestLog(){
     public static void main( String args[]) {
          LogEntity entity = new LogEntity();
          entity.setLogid(10000);
          entity.setLogMessage( "我要删数据了" );   Logger log = Logger.getLogger(TestLog.class); 
          log.info(entity);
     }}
    ////////////----------------------------不知道这样能不能满足你的要求
      

  7.   

    log4j.properties我这么写的:
    log4j.rootLogger=INFO,A1log4j.appender.A1=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.A1.BufferSize=40
    log4j.appender.A1.Driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
    log4j.appender.A1.URL=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SupplierBalance
    log4j.appedner.A1.User=sa
    log4j.appedner.A1.password=dsd_dsdn
    /*----------------------------------------
    log4j.appender.A1.layout=test.TestJDBCLayout/*--------TestJDBCLayout-----
    public class TestJDBCLayout extends Layout {    
        public String format(LoggingEvent event) {
            //layout由你自己拼
            LogEntity entity = (LogEntity)enent.getMessage();
            String layout="insert into ctest (logid,logmessage) values ("+entity.getLogId+"'"+ entity.getLogMessage +"')";
            return layout;
        }    public boolean ignoresThrowable() {
            return false;  //To change body of implemented methods use File | Settings | File Templates.
        }    public void activateOptions() {
            //To change body of implemented methods use File | Settings | File Templates.
        }
    }
    public class LogEntity{
        private long logid;
        private String logmessage; 
        //get and set 方法不写了
    }public class TestLog(){
     public static void main( String args[]) {
          LogEntity entity = new LogEntity();
          entity.setLogid(10000);
          entity.setLogMessage( "我要删数据了" );   Logger log = Logger.getLogger(TestLog.class); 
          log.info(entity);
     }}
    ////////////----------------------------不知道这样能不能满足你的要求