slf4j+logback 于log4j+commons-logging大PK

xiaoxiao2026-05-17  18

离开下班还有点时间,正好整理出2个日志系统对比发现,slf4j+logback 组合果然比log4j+commons-logging 高不少。少说废话看测试代码 1.测试类和方法选择同一个函数,大概是10000条记录放入list中,然后取出,分别用2个日志做日志记录 对比运行时间 测试代码 TestLinkList.JAVA package com.testLog; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; [color=red]import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;[/color] import org.slf4j.Logger; import org.slf4j.LoggerFactory; /*********************************************************************** * * TestLinkList.java * @copyright Copyright: 2009-2012 * @creator 周辉<br/> * @create-time May 20, 2009 4:30:14 PM * @revision $Id: * ***********************************************************************/ public class TestLinkList { private static final Log log = LogFactory.getLog(TestLinkList.class); //private static final Logger log = LoggerFactory.getLogger(TestLinkList.class); /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub long startTime=System.currentTimeMillis(); //List<StudentBean> list =getList(); List<StudentBean> list =getLinkList(); getListBean2(list); long end=System.currentTimeMillis(); log.info("list:::;"+list.size()); log.info("time:::;"+String.valueOf(end-startTime)); } public static List<StudentBean> getList(){ List<StudentBean> list= new ArrayList<StudentBean>(); for (int i=0;i<10000;i++){ StudentBean st= new StudentBean(); st.setId(i); st.setPassword("123456"+i); st.setUrl("http://127.0.0.1/"); st.setUsername("zhouhui"+i); list.add(st); } return list; } public static List<StudentBean> getLinkList(){ List<StudentBean> list= new LinkedList<StudentBean>(); for (int i=0;i<10000;i++){ StudentBean st= new StudentBean(); st.setId(i); st.setPassword("123456"+i); st.setUrl("http://127.0.0.1/"); st.setUsername("zhouhui"+i); list.add(st); } return list; } public static void getListBean(List<StudentBean> list){ for (int i=0;i<list.size();i++){ StudentBean studentBean=(StudentBean)list.get(i); log.info("username:::::::"+studentBean.getUsername()); } } public static void getListBean2(List<StudentBean> list){ for (StudentBean studentBean: list){ log.info("username:::::::"+studentBean.getUsername()); } } public static void get(){ long startTime=System.currentTimeMillis(); //List<StudentBean> list =getList(); List<StudentBean> list =getLinkList(); getListBean2(list); long end=System.currentTimeMillis(); log.info("list:::;"+list.size()); log.info("time:::;"+String.valueOf(end-startTime)); } } 先用LOG4J+commons-logging 测试 运行结果 [color=red]使用了1891毫秒[/color] 2009-05-20 16:53:33,953 [com.testLog.TestLinkList]-[INFO] list:::;10000 2009-05-20 16:53:33,953 [com.testLog.TestLinkList]-[INFO] time:::;1891 然后修改代码用slf4j+logback 测试 注释代码private static final Log log = LogFactory.getLog(TestLinkList.class); 使用private static final Logger log = LoggerFactory.getLogger(TestLinkList.class); 这里测试用WEB JSP 调用该类 JSP 代码 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <% com.testLog.TestLinkList test = new com.testLog.TestLinkList(); test.get(); %> <title>My JSP 'index.jsp' starting page</title> </head> <body> This is my JSP page. <br> </body> </html> tomcat 发布程序 运行 http://localhost:8081/testLog/index.jsp 控制台打出运行时间 2009-05-20 04:59:50:234 INFO c.t.TestLinkList - list:::;10000 2009-05-20 04:59:50:234 INFO c.t.TestLinkList - time:::;641 运行时间 [color=red]641毫秒[/color] 2个对比看出 slf4j+logback 性能是比log4j+commons-logging 组合高 详细代码见附件
转载请注明原文地址: https://www.6miu.com/read-5048911.html

最新回复(0)