конфигурация log4j2 не будет загружать конвертер пользовательских шаблонов

Я пытаюсь создать собственный конвертер шаблонов для log4j 2.0, но у меня возникают проблемы при получении конфигурации log4j для распознавания шаблона. Вот пользовательский конвертер:

package com.test.log4j.plugins;

import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.pattern.ConverterKeys;
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;

@Plugin(name="MarkerNamePatternConverter", category="Converter")
@ConverterKeys({"markername"})
public class MarkerNamePatternConverter extends LogEventPatternConverter {

    public static MarkerNamePatternConverter newInstance(final String[] options) {
        return new MarkerNamePatternConverter("markername", "markername");
    }

    protected MarkerNamePatternConverter(String name, String style) {
        super(name, style);
    }

    @Override
    public void format(LogEvent event, StringBuilder toAppendTo) {
        Marker marker = event.getMarker();
        if (marker != null) {
            // MarkerPatternConverter appends Marker.toString()
            // which includes the parents of the marker.  We just
            // want the marker's name
            toAppendTo.append(marker.getName());
        }
    }
}

И вот мой файл конфигурации log4j:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" packages="com.test.log4j.plugins">
  <Appenders>
    <Console name="console" target="SYSTEM_OUT">
      <PatternLayout pattern=" %-6level %markername  %d{YYYY-MM-dd HH:mm:ss}  %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="debug">
      <AppenderRef ref="console"/>
    </Root>
  </Loggers>
</Configuration>

Обратите внимание, что я включил пакет, который содержит пользовательский конвертер, в мою конфигурацию, отсутствие которого, похоже, является частой причиной проблем при использовании пользовательских плагинов.

Когда тестовый код выполняется, вывод состояния конфигурации не указывает, что плагин загружен или найден, и log4j обрабатывает% markername, как если бы это был шаблон преобразования «% marker», за которым следует «name». Например,

Marker marker = MarkerManager.getMarker("TEST");
log.info(marker, "test message");

производит следующий вывод:

INFO   TESTname  2014-07-23 14:47:57  test message

Я попытался изменить ключ преобразования на значение, которое не начиналось со стандартного шаблона преобразования, например "fmarker", и при выполнении log4j выдает следующую ошибку:

2014-07-23 14:44:55,814 ERROR Unrecognized format specifier [fmarker]
2014-07-23 14:44:55,816 ERROR Unrecognized conversion specifier [fmarker] starting at     position 18 in conversion pattern.
INFO   %fmarker  2014-07-23 14:44:55  test message

Документация указывает, что плагины собираются во время сборки, а не во время выполнения, но я не нашел ничего, что указывало бы на то, что мне нужно сделать что-то конкретное, чтобы найти мой собственный конвертер, кроме как:

Аннотируйте его с помощью @Plugin и @ConverterKeysУкажите категорию плагина, чтобы быть «Конвертером»Включить статический метод "newInstance (String [])"Реализуйте метод «формат»Укажите пакет плагина с помощью параметра конфигурации «пакеты».

Была документация для плагина Maven, но мой простой тест - это просто базовый Java-проект, разработанный в Eclipse.

Есть идеи, что я делаю не так?

Ответы на вопрос(2)

Ваш ответ на вопрос