Включение только дочерних элементов в конфигурацию Log4J2 с Xinclude

Я хотел бы написать стандартный файл конфигурации для log4j2 и расширить его для особых случаев (тестовые среды, модули и т. Д.), Которые позволили бы мне внести изменения в основной файл конфигурации, не повторяя его в альтернативном файле конфигурации.

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

пример

Файл приложения:

<Appenders>
    <Appender 1 ...>
    <Appender 2 ...>
    <Appender 3...>
<Appenders>

Это работает, но я хотел бы добавить больше дополнений после включения

    <Configuration xmlns:xi="http://www.w3.org/2001/XInclude"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               status="warn" name="XMLConfigTest" packages="com.patternconverters">
    <xi:include href="default-appenders.xml"/>
    <Loggers>
        <root level="ERROR">
            <appender-ref ref="LOG_ASYNC"/>
        </root>
    </Loggers>
</Configuration>

Поскольку log4J2 позволяет определять только один элемент "Appenders", мне нужен способ сделать включение, которое возвращает только дочерние элементы.

я пытался

<xi:include href="appenders.xml" xpointer="xpointer(//Appenders/*)"/>

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

Есть ли способ получить эту функциональность с помощью схемы элементов? До сих пор я мог включать только определенный элемент, используя элемент (/1/n), где n - позиция элемента.

Есть ли другой способ получить эту функцию в xml, поддерживаемый log4j2(я использую анализатор Apache Xerces, я полагаю)?

ОБНОВИТЬ:

После долгих исследований я не смог найти нативное решение xerces/log4j2. Я нашел две доступные альтернативы: использовать сторонний препроцессор, который поддерживает схему XPointer, или расширять / переписывать log4j2 XMLConfiguration для поддержки нескольких файлов конфигурации. В настоящее время для меня это не жизнеспособный вариант.

0 ответов

Другие вопросы по тегам