今天要做一个logback和log4j的性能对比,按理说logback应该效率更高,性能更好才对呀,可是测试出来的结果正好相反,不知道有人对比过吗?
测试代码都一样,如下:
public class Test {
static Logger logger = Logger.getLogger(Test.class.getName());  /**  
 * @param args void
 */
public static void main(String[] args) {
System.out.println("开始log4j测试");
int i=0;
String s = "测试一下超过100个字符时的写入时间测试一下超过100个字符时的写入时间测试一下超过100个字符时的写入时间测试一下超过100个字符时的写入时间测试一下超过100个字符时的写入时间测试一下超过100个字符时的写入时间";
Date startTime = new Date();
for(i=0;i<10000000;i++){
logger.debug("第"+i+"次循环,"+s);
}
Date endTime = new Date();
System.out.println("结束log4j测试,耗时:"+(endTime.getTime()-startTime.getTime())+"ms");
}}
而配置方面:
log4j.properties
log4j.rootCategory=DEBUG,logfile#logfile configure
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=D:/logtest/log4j.log
log4j.appender.logfile.Append = true
log4j.appender.logfile.Threshold = DEBUG
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern= %d %p [%c] - <%m>%n
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
<file>d:/logtest/logback.log</file>  
    <append>true</append>  
    <encoder>  
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>  
    </encoder>
</appender> <root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>测试结果如下:
开始log4j测试
结束log4j测试,耗时:327062ms开始logback测试
结束logback测试,耗时:445140ms不管是循环次数是1000W,还是100W,总是log4j的耗时要少些,不知道为什么,各位大侠,有知道原因的吗,是我的测试或者配置有问题吗?Log4j性能优化logback