Я испытываю log4j в простом тестовом приложении. Я создаю новый проект Java в затмении и добавляю log4j JAR (v1.2.16) к моему пути сборки. Я затем создаю простой класс, который печатает Привет Мир. Затем я использую log4j Logger
класс для входа информационного сообщения. То, когда я запускаю приложение, я вижу, что журнал обменивается сообщениями, с помощью то, что я принимаю, является значением по умолчанию appender и расположением.Отлично. Из-за чего я испытываю затруднения, добавляет моя собственная конфигурация. Это - то, что я сделал:
Созданный log4j.properties файл с пользовательским appender и уровнем журнала и помещенный это в src папку (который после компиляции копируется в папку мусорного ведра). Запустите приложение - никакое изменение.
Я пытаюсь добавить PropertyConfigurator.configure("log4j.properties")
. Запустите приложение - никакое изменение. Никакие ошибки, но никакое изменение.
Что я должен сделать, чтобы заставить log4j загружать мой конфигурационный файл?
Аргх. Я обнаружил, что проблема в том, что eclipse импортировал неправильный класс Logger
. Он импортировал java.util.logging.Logger, который, конечно, имеет собственную конфигурацию, отличную от log4j. Ну что ж, надеюсь, что кто-то другой сделает это и решит эту проблему, прочитав этот вопрос.
Вы можете включить внутреннюю отладку log4j, установив системное свойство log4j.debug
. Среди прочего, это заставит log4j показать, как он настраивается.
Вы можете попробовать явно указать URL-адрес файла конфигурации с помощью системного свойства log4j.configuration
.
См. Также: этот вопрос .
Для тех, у кого нет RTFM, просмотрите заголовок Процедура инициализации по умолчанию , где вы найдете следующее:
Точный алгоритм инициализации по умолчанию определяется следующим образом:
- Установка для системного свойства
log4j.defaultInitOverride
любого значения, кроме «false
», приведет к тому, что log4j пропустит значение по умолчанию {{ 1}} процедура инициализации (эта процедура).- Установите для переменной строки ресурса значение системного свойства
log4j.configuration
. Предпочтительный способ указать файл инициализации по умолчанию - использовать системное свойствоlog4j.configuration
. Если системное свойство log4j.configuration не определено, установите для ресурса строковой переменной значение по умолчанию «log4j.properties
».- Попытка преобразовать переменную ресурса в URL.
- Если переменная ресурса не может быть преобразована в URL-адрес, например, из-за исключения MalformedURLException, выполните поиск ресурса в пути к классам , вызвав org.apache.log4j.helpers.Loader .getResource (resource, Logger.class) , который возвращает URL. Обратите внимание, что строка «
log4j.properties
» представляет собой неверный URL. См. Loader.getResource (java.lang.Строка) для получения списка найденных местоположений.- Если URL-адрес не может быть найден, прервите инициализацию по умолчанию. В противном случае настройте log4j из URL-адреса. PropertyConfigurator будет использоваться для анализа URL-адреса для настройки log4j, если URL-адрес не заканчивается расширением «
.xml
». , и в этом случае будет использоваться DOMConfigurator . При желании вы можете указать собственный конфигуратор. Значение системного свойстваlog4j.configuratorClass
принимается как полное имя класса вашего настраиваемого конфигуратора. Указанный вами пользовательский конфигуратор должен реализовывать интерфейсКонфигуратор
.
log4j.properties
должен быть в вашем пути к классам. «Папка src», которая копируется в «папку bin» (я предполагаю, что вы говорите здесь о настройке Eclipse), обычно принадлежит вашему пути к классам, поэтому ее следует найти (размещаете ли вы ее в верхней части «src "папка, верно?)