log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:/Users/win7/Downloads/log/log.txt" />
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<!-- 设置保存备份回滚日志的最大个数 -->
<param name="MaxBackupIndex" value="20" />
<param name="BufferSize" value="10240" />
<!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB -->
<param name="MaxFileSize" value="50MB" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n" />
</layout>
</appender>
<appender name="AsyncAppender" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="512" />
<appender-ref ref="RollingFileAppender" />
</appender>
<!-- 根logger的设置-->
<root>
<level value ="INFO"/>
<!--<appender-ref ref="RollingFileAppender"/>-->
<appender-ref ref="AsyncAppender"/>
</root>
</log4j:configuration>
Java代码
package test;
import org.apache.log4j.Logger;
public class Main {
private static final Logger LOGGER = Logger.getLogger(Main.class.getName());
public static void main(String[] args) throws InterruptedException {
Thread[] threads = new Thread[20];
for (int i = 0; i < threads.length; i++) {
threads[i] =
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 10000; i++) {
testLog();
}
}
});
}
long s = System.currentTimeMillis();
for (int i = 0; i < threads.length; i++) {
threads[i].start();
}
for (int i = 0; i < threads.length; i++) {
threads[i].join();
}
long e = System.currentTimeMillis();
System.out.println(e - s);
}
public static void testLog() {
LOGGER.debug("*********** debug **********");
LOGGER.info("*********** info **********");
LOGGER.warn("*********** warn **********");
LOGGER.error("*********** error **********");
LOGGER.fatal("*********** fatal **********");
}
}
依赖包
log4j-1.2.17.jar