按道理和相关的资料表明,log4j的logger不会比system.out快的,绝对会慢一点。 至于楼主的测试!?? 我想应该是不正确的。

解决方案 »

  1.   

    我是在wsad5.0中跑出来的结果代码如下:
    import org.apache.log4j.BasicConfigurator;
    import org.apache.log4j.Level;
    import org.apache.log4j.Logger;public class Temp { public static void main(String[] args) {
    Logger  logger = Logger.getLogger("Temp");
    BasicConfigurator.configure();
    long a=System.currentTimeMillis();
    for (int i=0;i<100000;i++){
    logger.debug("aa");
    }
    System.out.println(System.currentTimeMillis()-a);
    }
    }
    和import org.apache.log4j.BasicConfigurator;
    import org.apache.log4j.Level;
    import org.apache.log4j.Logger;public class Temp { public static void main(String[] args) {
    Logger  logger = Logger.getLogger("Temp");
    BasicConfigurator.configure();
    long a=System.currentTimeMillis();
    for (int i=0;i<100000;i++){
    System.out.println("aa");
    }
    System.out.println(System.currentTimeMillis()-a);
    }
    }只改了中间输出的那条,多次运行,log4j最后的输出一般是5XXX,System.out的输出一般是8XXX。
    用的是wsad自带的jdk,应该是1.3的,log4j是1.2.8
    我的机器是笔记本,512内存,1.3迅驰。
      

  2.   

    log4j绝对是所有logger中最快的,但是为什么这么快我也不知道 :)
      

  3.   

    没有做过测试,但log.debug本身涉及到是否可以debug的操作,然后才往对应的输出打印,时一试往文件中打印把
      

  4.   

    不会吧,看看配置文件
    # Set root category priority to DEBUG and its only appender to A1. 
    log4j.rootCategory=DEBUG, A1 
    # A1 is set to be a ConsoleAppender which outputs to System.out. 
    log4j.appender.A1=org.apache.log4j.ConsoleAppender 
    # A1 uses PatternLayout. 
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
    log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 
      

  5.   

    我没看过LOG4J源代码。
    不过你尝试一下用反编译软件查看源代码试一下。
      

  6.   

    http://logging.apache.org/site/binindex.cgi有源码下载
      

  7.   

    log4j是apache的公开原码的。呵呵
      

  8.   

    去apache的网站上有源代码下载。效率会有这么大的差别么?在神奇了
      

  9.   

    我用你的程序运行了一下log4j最后的是20199、8252、22983、7600、11366,System.out的输出是7841、8912、6840。
    有时相差好大
    而且是运行完System.out的输出后,运行log,此时log数字小,单独一直运行log,log的数值大,怪我用的是J2SDK1.4.2,log4j是1.2.8
    我的机器是笔记本,512内存,1.7P4。