1. 程式人生 > >SpringMVC使用log4j輸出csv檔案

SpringMVC使用log4j輸出csv檔案

1.設定log4j.properties

log4j.rootLogger=ERROR, logfile

log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=D:\\DialoguePortal.csv
log4j.appender.logfile.Append=true
log4j.appender.logfile.Encoding=gbk
#log4j.appender.logfile.layout=org.apache.log4j.PatternLayou
log4j.appender.logfile.layout=com.dialogueportal.test.CSVLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm},%m%n
一定要設定gbk,因為中文系統不支援utf-8
log4j.appender.logfile.Encoding=gbk
寫入csv的時候,使用英文逗號,分單元格,%n有換行功能,你可能會因為本身字串帶有的逗號而困擾,只需要用String.replace(",",",")英文逗號,換成中文逗號就可以了
如果不需要表頭,就使用
log4j.appender.logfile.layout=org.apache.log4j.PatternLayou
需要表頭,需要重寫patternlayout方法,使用
log4j.appender.logfile.layout=com.dialogueportal.test.CSVLayout
CSVLayout.class程式碼
/**
 * 
 */
package com.dialogueportal.test;

import org.apache.log4j.PatternLayout;

/**
 * @author intern
 *重寫layout加入表頭資訊
 */
public class CSVLayout extends PatternLayout {

    private static final String HEADER = "TestTime,TestCaseName,TestFileName,TestMethodName,TestParameters,ExpectedValues,ActualValues,TestResult";

    @Override
    public String getHeader() {
        return HEADER + System.getProperty("line.separator");
    }
}

換行:

System.getProperty("line.separator")

要讓springMVC框架使用log4j你必須讓log4j注入到框架中,採用重寫SpringJUnit4ClassRunner.class的方法

程式碼:

/**
 * 
 */
package com.dialogueportal.test;

import java.io.FileNotFoundException;

import org.junit.runners.model.InitializationError;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.Log4jConfigurer;
/**
 * @author intern
 *
 */
public class JUnit4ClassRunner extends SpringJUnit4ClassRunner {
    static {
        try {
          Log4jConfigurer.initLogging("classpath:com/log4j.properties");
        } catch (FileNotFoundException ex) {
          System.err.println("Cannot Initialize log4j");
        }
      }
      public JUnit4ClassRunner(Class<?> clazz) throws InitializationError {
        super(clazz);
      }
    }
你寫測試用例的時候就只需要@RunWith(JUnit4ClassRunner.class),這個標籤就可以正常運行了,不懂的在下面留言