共享记录和log4j的属性文件(commons-logging and log4j properti

2019-08-17 08:06发布

我试图用通过共享记录有问题的log4j,如果log4j属性文件不叫log4.properties。 我得到以下错误:log4j的:警告没有附加目的地可以发现记录器(LogMePlease)。 log4j的:WARN请正确初始化log4j的系统。

我的代码是非常简单的:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LogMePlease 
{
static Log l = LogFactory.getLog(LogMePlease.class);

public static void main(String [] args)
{
    l.warn("Hello World!");
}
}

在类路径中,我有:其中包含以下条目commons-logging.properties文件

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
log4j.configuration=log4j-test.properties

log4j-test.properties文件

当我运行这段代码我得到

log4j:WARN No appenders could be found for logger (LogMePlease).
log4j:WARN Please initialize the log4j system properly.

如果我重新命名log4j-test.properties文件是log4j.properties - 那么一切正常。 所以,问题是我怎么能设置公共记录为log4j.properties文件使用任意名称。

Answer 1:

该文件commons-logging.properties只从通用日志阅读log4j的同时,将寻找log4j.configuration系统性能。

所以,你必须要么指定它们-Dlog4j.configuration=log4j-test.properties命令行JVM选项上,或者你必须调用System.setProperty()的第一次调用任何记录方法之前(这通常是非常难以实现)。

注意:如果你可以使用XML配置log4j.xml ; 它是log4j的配置更简单,功能强大。



Answer 2:

您需要将协议添加到系统属性值的面前就像这样:-Dlog4j.configuration =文件://log4j-test.properties

如果没有协议,它将在类路径中。



Answer 3:

七月-共享记录 ,它喜欢你的情况。

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

设置log4j.properties,日志的实例之前。

System.setProperty("log4j.configuration", "log4j.properties");


文章来源: commons-logging and log4j properties file