java log4j 默认路径下_java-更改log4j.properties的位置

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值