Папка нежелательного журнала создается, когда ведение журнала происходит с процессора Camel, хотя я передаю имя папки журнала динамически с ThreadContext - PullRequest
0 голосов
/ 04 июля 2019

Я использую приложение для добавления файлов в Log4j2 и использую ThreadContext.put (Key, Value) для динамического предоставления имени файла журнала. Все идет хорошо, журналы и папка журналов генерируются, как задумано. Ниже мой код Log4j2

    <Routing name="File">
        <Routes pattern="$${ctx:ROUTING_KEY}">
            <Route>
                <RollingFile name="app.log" bufferedIO="true" immediateFlush="true" append="true"
                    fileName="logs/${ctx:ROUTING_KEY}/app.log"
                    filePattern="logs/${ctx:ROUTING_KEY}/archive/app-%d{MM-dd-yyyy}-%i.log">
                    <PatternLayout>
                        <pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern>
                    </PatternLayout>
                </RollingFile>
            </Route>
        </Routes>
    </Routing>

И я использую приведенный ниже код для динамического предоставления имени файла журнала

    ThreadContext.put(key, value);
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.reconfigure();

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что все журналы записываются в динамически создаваемую папку и файл, кроме журналов, созданных из классов процессора Camel, создается папка $ {ctx: ROUTING_KEY} и журналы процессора верблюда вводится туда.

Журналы для справки:

Camel Log 2019-05-03T12: 31: 58,342 [Нить верблюда (верблюд-1) # 1 - таймер: // Таймер] ОШИБКА com.data.app.core.camel.processor.ExceptionHandler 30 - ИСКЛЮЧЕНИЕ ПРОИЗВЕДЕНО !!

Другой журнал 2019-05-03T09: 45: 45,558 [main] ОШИБКА com.data.app.game.App 42 - Не удалось обнаружить требуемые команды.

Итак, в итоге создаются две папки для регистрации 1) GoodName <--- Содержит все журналы 2) $ {ctx: ROUTING_KEY} <--- Содержит только логи верблюжьего процессора </p>

Бонус: когда я помещаю строку ThreadContext.get (ключ) в верблюжий процессор, он возвращает ноль.

...