[备忘]使用log4j

加载配置的方法

方法1:
把配置改名为log4j.properties,放在src目录下,打包成jar的时候,它就在jar的根目录下了。 方法2:
使用getResource的方式

//假设这里把配置文件放在com.fatkun目录下
String resource = "/com/fatkun/log4j.properties";
URL configFileResource = TestLog4j.class.getResource(resource);
PropertyConfigurator.configure(configFileResource);

方法3:
相对路径,把配置放在{项目根目录}/conf目录下,默认就是相对路径了

PropertyConfigurator.configure("conf/log4j.properties");

例子

package com.fatkun;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

// Contributed by ThoughtWorks Inc.

public class TestLog4j {

	private static Logger logger = Logger.getLogger(TestLog4j.class);

	public static void main(String argv[]) {
		
		
		PropertyConfigurator.configure("conf/log4j.properties");

		// Add a bunch of logging statements ...
		logger.debug("Hello, my name is Homer Simpson.");
		logger.info("We are the Simpsons!");

	}

}

配置文件

log4j.rootCategory=DEBUG,console,R

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

# R is the RollingFileAppender that outputs to a rolling log 
# file called rolling_log_file.log.

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log/rolling_log_file.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L %m%n
log4j.appender.R.MaxFileSize=5MB
log4j.appender.R.MaxBackupIndex=10

extra jar出来后可以用以下命令执行,lib目录里的是log4j.jar

java -classpath test_log4j.jar -Djava.ext.dirs=./lib com.fatkun.TestLog4j

如果想把某个package输出到独立的文件

log4j.rootLogger=DEBUG,myConsole,syslog
log4j.logger.com.fatkun.xxx=INFO,jobdep
log4j.additivity.com.fatkun.xxx=false # 不在主日志记录

参考

官方example
Log4j 配置最全说明

updatedupdated2023-12-062023-12-06