Как реализовать log4j в многопоточном (Executor Service) автономном Java-приложении - PullRequest
0 голосов
/ 03 января 2019

Как log4j может быть реализован в многопоточной среде, разработанной с использованием техники ExecutorService.

Подробная информация: Мы берем лист Excel в качестве входных данных, перечисляем задачи в листе Excel, делим список на несколько небольших списков в зависимости от количества экземпляров, наконец запускаем задачи из каждого подсписка в разных экземплярах потоков. Каждый экземпляр потока будет использовать шаблон команды и последовательно выполнять все задачи, представленные в списке.

Требуется: Как мы можем добавить все журналы в один файл, а также консоль в последовательном порядке, так что журналы из потока-1 должны печататься сначала, аналогично до конца.

Реализация уже опробована: MDC - не удалось правильно реализовать.

MDC - Ссылка 1

MDC - Ссылка 2

try {
        ExecutorService executor = Executors.newFixedThreadPool(inNoOfInstances);
        for (int i = 0; i < inNoOfInstances; i++) {
            List<LinkedHashMap<String, String>> subList = newPartitionList.get(i);
            Runnable runner = new TaskRunner(subList, _userName, _passWord, _dbUsername, _dbPassword, globalScopeMap, scope,i);
            executor.execute(runner);
            Thread.sleep(1000);
        }
        executor.shutdown();
        executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
        while (!executor.isTerminated()) {
        }
...