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");