Commons-logging и файл свойств log4j

Я пытаюсь использовать log4j через commons-logging и имею проблемы, если файл свойств 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!");
}
}

В моем пути класса у меня есть: 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.

Ответ 1

Файл commons-logging.properties считывается только из ведения общего права, а log4j будет искать log4j.configuration в свойствах системы.

Поэтому вы должны либо указать их с помощью -Dlog4j.configuration=log4j-test.properties в командной строке как параметр JVM, либо вы должны вызвать System.setProperty() перед первым вызовом любого метода ведения журнала (чего обычно трудно достичь).

Примечание. Если вы можете, используйте конфигурацию XML log4j.xml; это намного проще и мощнее для настройки log4j.

Ответ 2

Вам нужно добавить протокол к значению свойства System, как показано ниже: -Dlog4j.configuration = file://log4j-test.properties

Без протокола он будет выглядеть в пути к классам.

Ответ 3

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

установите log4j.properties перед экземпляром журнала.

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