我试图通过commons-logging使用log4j,如果log4j属性文件没有被称为log4.properties则会遇到问题。 我收到以下错误: log4j:WARN没有找到记录器(LogMePlease)的appender。 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文件的任意名称。
答案 0 :(得分:10)
文件commons-logging.properties
仅从公共日志中读取,而log4j将在系统属性中查找log4j.configuration
。
因此,您必须在命令行上使用-Dlog4j.configuration=log4j-test.properties
指定它们作为JVM选项,或者在第一次调用任何日志记录方法之前必须调用System.setProperty()
(这通常很难实现)。
注意:如果可以,请使用XML配置log4j.xml
;它对配置log4j更加简单和强大。
答案 1 :(得分:1)
您需要将协议添加到System属性值的前面,如下所示:-Dlog4j.configuration = file://log4j-test.properties
如果没有协议,它将在类路径中查找。
答案 2 :(得分:0)
jul - commons-logging,它喜欢你的情况。
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
在Log。
的实例之前设置log4j.propertiesSystem.setProperty("log4j.configuration", "log4j.properties");