我正在尝试使用Log4j理解日志记录,我目前的探索之一是将大量数据条目(100k)写入日志文件。我目前使用Log4j 1.2.17简单和NetBeans 8.1。我的log4j。属性文件
log4j.rootLogger=debug, stdout, R
# This is use for debuging mode
log4j.logger.testlogging=DEBUG
#### Appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n
#### Appender writes to a file
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%nenter code here
实际的程序是
package log4j;
import org.apache.log4j.Logger;
public class Log4j {
//initializing the logger
private final static Logger log = Logger.getLogger(Log4j.class.getName());
public static void main(String[] args) {
int testnum = 100000;
for (int i = 0; i<testnum ; i++) {
log.debug("This is a test and the current value is " + i);
}
}
}
当我查看运行该程序后创建的examples.log文件时,我看到并不是所有条目都像在控制台中看到的那样被填充。我看到它在6962到14752甚至99775之间波动。文件可以输出的内存有限制吗?如何使所有100k项都写入日志文件?
默认情况下,org.apache.log4j.RollingFileAppender
的默认大小限制等于10Mb
。您可以使用
log4j.appender.R.maxFileSize=<number_of_bytes_you_need>
或者您可以选择另一个appender实现。您可以在官方手册中找到更多信息。
注意
目前log4j 1.x
版本已过时。我建议您使用log4j 2.x