Файл свойств commons-logging и log4j

Я пытаюсь использовать log4j через commons-logging и у меня возникают проблемы, если файл свойств 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.

3 ответа

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

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

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

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

Без протокола это будет выглядеть в classpath.

jul - com-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");
Другие вопросы по тегам