更改log4j.properties的位置

我想把我所有的configuration文件放在我的应用程序目录的/config子文件夹中。 Log4j需要我的应用程序的根文件夹中的log4j.properties文件。 有没有办法告诉log4j在哪里寻找属性文件?

是的,定义log4j.configuration属性

 java -Dlog4j.configuration=file:/path/to/log4j.properties myApp 

请注意,该属性值必须是一个URL。

有关更多信息,请参阅Log4j手册中的 “默认初始化过程”一节。

您可以使用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 Log4Jconfiguration,请改用DOMConfigurator 。

使用PropertyConfigurator: PropertyConfigurator.configure(configFileUrl);

请参阅以下示例 – 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"); } } 

要更改logging器级别 – Logger.getRootLogger().setLevel(Level.INFO);

在Eclipse中,您可以将VM参数设置为:

 -Dlog4j.configuration=file:///${workspace_loc:/MyProject/log4j-full-debug.properties} 

这是我的课:path很好,属性被加载。

 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); } }