使用 slf4j-log4j12 使用 Log4j 设置配置文件

Setting configuration file with Log4j using slf4j-log4j12

我知道有几个关于如何设置文件的答案。没有人和我一起工作过。

我正在尝试统一几个 conf 文件,因为我需要将 slf4j-log4j12 中提供的 log4j 的 conf 设置到作为程序参数提供的配置文件中。直到现在我尝试通过设置作为 jvm 的参数,如:

java '-Dlog4j.configuration=conf.cfg' -jar my.jar

我回来了:

log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:ERROR Could not parse file [].

通过编程方式设置:

 System.setProperty("log4j.configuration",(new File(  Configurator.getDefaultConfig().getString(Const.LoggingDefaultLoggingFile))).toURL().toString());

 System.setProperty("log4j.configurationFile",(new File(  Configurator.getDefaultConfig().getString(Const.LoggingDefaultLoggingFile))).toURL().toString());

同样的结果。

我尝试使用 DOMConfigurator,但用于 xml 我正在使用 properties,所以没有成功。

我正在搜索如何重新加载 log4j,但给出了订阅监视更改和不断加载更改的复杂解决方案。

我只想以编程方式更改配置文件一次

到目前为止,我可以直接将文件放入jar 中来设置文件。但这是通过使用具有默认名称的分隔文件。

有没有办法直接将文件加载到 Log4j 中(没有糟糕的系统属性)? o 有更好的简单方法吗?

  1. log4j 在 WEB-INF\classes

  2. 下寻找 log4j.properties
  3. PropertyConfigurator class,

用法示例:

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
// ...
public static final Logger log=Logger.getLogger(App.class);
// ...
PropertyConfigurator.configure("log4j.properties");