SpringMVC使用log4j输出csv文件

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dubinglin/article/details/70918469

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),这个标签就可以正常运行了,不懂的在下面留言






展开阅读全文

没有更多推荐了,返回首页