更改log4j.properties的位置

时间:2011-09-12 15:46:54

标签: java log4j

我想将所有配置文件放在应用程序目录的/config子文件夹中。 Log4j期待我的应用程序的根文件夹中的log4j.properties文件。有没有办法告诉log4j在哪里查找属性文件?

7 个答案:

答案 0 :(得分:64)

是,定义log4j.configuration属性

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

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

有关Log4j manual中的更多阅读部分“默认初始化过程”。

答案 1 :(得分:32)

您可以使用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

答案 2 :(得分:4)

使用PropertyConfigurator:PropertyConfigurator.configure(configFileUrl);

答案 3 :(得分:2)

参考这个例子 - 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);

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

这是我的类:路径很好,属性已加载。

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

}

答案 6 :(得分:0)

您必须像这样使用log4j.configuration属性:

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

如果文件位于类路径下(位于./src/main/resources/文件夹中),则可以省略file://协议:

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