java – log4j的性能
我正在开发一个网络应用程序,我想记录一些信息,以帮助我改进和观察应用程序. (我正在使用Tomcat6)
首先我以为我会使用StringBuilders,将日志附加到他们,一个任务会持续到数据库中,就像每2分钟一样.因为我担心开箱即用的记录系统的性能.然后我做了一些测试.特别是log4j. 这是我的代码: Main.java public static void main(String[] args) { Thread[] threads = new Thread[LoggerThread.threadsNumber]; for(int i = 0; i < LoggerThread.threadsNumber; ++i){ threads[i] = new Thread(new LoggerThread("name - " + i)); } LoggerThread.startTimestamp = System.currentTimeMillis(); for(int i = 0; i < LoggerThread.threadsNumber; ++i){ threads[i].start(); } LoggerThread.java public class LoggerThread implements Runnable{ public static int threadsNumber = 10; public static long startTimestamp; private static int counter = 0; private String name; public LoggerThread(String name) { this.name = name; } private Logger log = Logger.getLogger(this.getClass()); @Override public void run() { for(int i=0; i<10000; ++i){ log.info(name + ": " + i); if(i == 9999){ int c = increaseCounter(); if(c == threadsNumber){ System.out.println("Elapsed time: " + (System.currentTimeMillis() - startTimestamp)); } } } } private synchronized int increaseCounter(){ return ++counter; } } } log4j.properties log4j.logger.main.LoggerThread=debug,f log4j.appender.f=org.apache.log4j.RollingFileAppender log4j.appender.f.layout=org.apache.log4j.PatternLayout log4j.appender.f.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.f.File=c:/logs/logging.log log4j.appender.f.MaxFileSize=15000KB log4j.appender.f.MaxBackupIndex=50 我认为这是log4j的一个很常见的配置. 这里是数字(全部以毫秒为单位) LoggerThread.threadsNumber = 10 1.2.14: 4235,4267,4328,4282 1.2.16: 2780,2781,2797,2781 LoggerThread.threadsNumber = 100 1.2.14: 41312,41014,42251 1.2.16: 25606,25729,25922 我觉得这很快.不要忘记:在每个循环中,运行方法不仅仅是登录到文件,它必须连接字符串(名称“:”i),并检查一个如果测试(i == 9999). 当threadsNumber为10时,有100.000个loggings,如果测试和连接.当它是100,有1.000.000日志,如果测试和连接. (我已经在某处阅读JVM使用StringBuilder的附加连接,而不是简单的连接). 我错过了什么?我做错了吗?我忘了任何可能降低性能的因素吗? 我读到:“实际记录的典型成本是大约100到300微秒.”这是对的吗? (log4J manual) 解决方法
是的,Log4J由于其实施者的自觉努力而被认为是快速的.另请参见本07/08末尾的“性能”一节.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |