java - commons-logging 和 log4j 属性文件

标签 java log4j apache-commons-logging

我正在尝试通过 commons-logging 使用 log4j,但如果 log4j 属性文件未称为 log4.properties,则会出现问题。 我收到以下错误: log4j:WARN 找不到记录器 (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!");
}
}

在我的类(class)路径中,我有: 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 - 那么一切正常。 所以,问题是我如何设置公共(public)日志记录以使用任意名称的 log4j.properties 文件。

最佳答案

文件 commons-logging.properties 仅从 commons 日志中读取,而 log4j 将在系统属性中查找 log4j.configuration

因此您必须在命令行上使用 -Dlog4j.configuration=log4j-test.properties 指定它们作为 JVM 选项,或者您必须调用 System.setProperty() 在第一次调用任何日志记录方法之前(这通常很难实现)。

注意:如果可以,使用XML配置log4j.xml;配置 log4j 更加简单和强大。

关于java - commons-logging 和 log4j 属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1524109/

相关文章:

java - 在 Java 中使用 commons.logging 记录异常?

java - 加密聊天java

java - log4j 属性文件 : how to configure?

variables - 如何让 Tomcat 的logging.properties 识别我的 Catalina 变量?

java - 如何指定 2 个 log4j 文件,它们在日志字段中都有单独的类名

java - Log4j 是一个死项目吗?

java - Libgdx 在隐藏应用程序后重新加载 scene2d 皮肤

java - 毫秒未出现在 DateFormat.format 输出中

java - Gson:序列化 transient 字段?

java - 将 System.out.println 重定向到 Log4J,同时保留类名信息