java-更改log4j.properties的位置
我要将所有配置文件放在应用程序目录的/config子文件夹中。 Log4j期望在我的应用程序的根文件夹中找到log4j.properties文件。 有没有办法告诉log4j在哪里寻找属性文件?
markus asked 2020-01-26T02:31:26Z
7个解决方案
66 votes
是的,定义log4j.configuration属性
java -Dlog4j.configuration=file:/path/to/log4j.properties myApp
请注意,该属性值必须是URL。
有关更多信息,请阅读Log4j手册中的“默认初始化过程”部分。
Alexander Pogrebnyak answered 2020-01-26T02:31:54Z
32 votes
您可以使用PropertyConfigurator将log4j.properties加载到磁盘中的任何位置。
例:
Logger logger = Logger.getLogger(this.getClass());
String log4JPropertyFile = "C:/this/is/my/config/path/log4j.properties";
Properties p = new Properties();
try {
p.load(new FileInputStream(log4JPropertyFile));
PropertyConfigurator.configure(p);
logger.info("Wow! I'm configured!");
} catch (IOException e) {
//DAMN! I'm not....
}
如果您具有XML Log4J配置,请改用DOMConfigurator。
Buhake Sindi answered 2020-01-26T02:32:22Z
4 votes
使用PropertyConfigurator:PropertyConfigurator.configure(configFileUrl);
Suraj Chandran answered 2020-01-26T02:32:42Z
2 votes
请参考此示例,摘自-[http://www.dzone.com/tutorials/java/log4j/sample-log4j-properties-file-configuration-1.html]
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class HelloWorld {
static final Logger logger = Logger.getLogger(HelloWorld.class);
static final String path = "src/resources/log4j.properties";
public static void main(String[] args) {
PropertyConfigurator.configure(path);
logger.debug("Sample debug message");
logger.info("Sample info message");
logger.warn("Sample warn message");
logger.error("Sample error message");
logger.fatal("Sample fatal message");
}
}
更改记录器级别-Logger.getRootLogger().setLevel(Level.INFO);
Borat Sagdiyev answered 2020-01-26T02:33:07Z
0 votes
在Eclipse中,您可以将VM参数设置为:
-Dlog4j.configuration=file:///${workspace_loc:/MyProject/log4j-full-debug.properties}
Sven Jörns answered 2020-01-26T02:33:26Z
0 votes
这是我的课程:路径很好,并且已加载属性。
package com.fiserv.dl.idp.logging;
import java.io.File;
import java.io.FileInputStream;
import java.util.MissingResourceException;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LoggingCapsule {
private static Logger logger = Logger.getLogger(LoggingCapsule.class);
public static void info(String message) {
try {
String configDir = System.getProperty("config.path");
if (configDir == null) {
throw new MissingResourceException("System property: config.path not set", "", "");
}
Properties properties = new Properties();
properties.load(new FileInputStream(configDir + File.separator + "log4j" + ".properties"));
PropertyConfigurator.configure(properties);
} catch (Exception e) {
e.printStackTrace();
}
logger.info(message);
}
public static void error(String message){
System.out.println(message);
}
}
pankaj answered 2020-01-26T02:33:46Z
0 votes
您必须像这样使用file://属性:
java -Dlog4j.configuration=file:/path/to/log4j.properties myApp
如果文件在类路径下(位于./src/main/resources/文件夹中),则可以省略file://协议:
java -Dlog4j.configuration=path/to/log4j.properties myApp
Thomas Decaux answered 2020-01-26T02:34:11Z