Какой метод на самом деле выполняет опрокидывание в log4j2 - PullRequest
0 голосов
/ 09 ноября 2018

Я хотел знать, какой метод на самом деле выполняет перенос файлов в log4j2. Я попытался найти его в исходном коде, но не смог его найти.

В классе DefaultRolloverStrategy есть метод public RolloverDescription rollover(final RollingFileManager manager), который я переопределил в своем классе CustomStrategy только для того, чтобы выяснить, что этот метод не выполняет фактического ролловера.

Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 12 ноября 2018

То, что вы ищете, на самом деле - RolloverDescription , которое содержит два типа действий:

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

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

Часть, где выполняются эти действия, - RollingFileManager.rollover

        final RolloverDescription descriptor = strategy.rollover(this);
        if (descriptor != null) {
            writeFooter();
            closeOutputStream();
            if (descriptor.getSynchronous() != null) {
                LOGGER.debug("RollingFileManager executing synchronous {}", descriptor.getSynchronous());
                try {
                    success = descriptor.getSynchronous().execute();
                } catch (final Exception ex) {
                    success = false;
                    logError("Caught error in synchronous task", ex);
                }
            }

            if (success && descriptor.getAsynchronous() != null) {
                LOGGER.debug("RollingFileManager executing async {}", descriptor.getAsynchronous());
                asyncExecutor.execute(new AsyncAction(descriptor.getAsynchronous(), this));
                releaseRequired = false;
            }
            return true;
        }

Итак, ваш CustomStrategy.rollover - это то, что происходит в первой строке фрагмента кода выше. CustomStrategy.rollover возвращает RolloverDescription, которая состоит из выполняемого действия, как я объяснил выше.

...