老问题(在谷歌中有很好的索引)。除了 OP 的要求外,还添加了其他方法log4j.properties
log4j.properties
在运行时加载的修改
private void updateLog4jConfiguration(String logFile) {
Properties props = new Properties();
try {
InputStream configStream = getClass().getResourceAsStream( "/log4j.properties");
props.load(configStream);
configStream.close();
} catch (IOException e) {
System.out.println("Errornot laod configuration file ");
}
props.setProperty("log4j.appender.FILE.file", logFile);
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}
log4j.properties
在运行时设置
可以手动完成
Properties properties = new Properties();
properties.setProperty("log4j.logger.org.hibernate", "ERROR");
// ...
LogManager.resetConfiguration();
PropertyConfigurator.configure(properties);
或者通过加载不同的属性文件
Properties properties = new Properties();
properties.load(new FileInputStream("/etc/myapp/properties/custom-log4j.properties"));
LogManager.resetConfiguration();
PropertyConfigurator.configure(properties);
虚拟机选项
您可以告诉 log4j 使用log4j.configuration
VM 选项加载不同的文件
java -Dlog4j.configuration=file:///etc/myapp/properties/custom-log4j.properties