Log4j: Почему у меня отсутствуют записи в журнале при входе в Callable, который передается в ExecutorService - PullRequest
0 голосов
/ 16 января 2020

У меня есть что-то похожее на это:

private static final Logger log = Logger.getLogger(thisClass.class);
private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(1);
...
...
public void method1() {
    Callable<Integer> callable = () -> {
        Timer timer = new Timer();
        try {
            Integer i = someMethod();
            log.info("got " + i + " in " + timer.getElapsedTime());
        } catch (Exception e) {
            log.info("exception thrown after " + timer.getElapsedTime());
            throw e;
        }
        return i;
    };
    method2(callable);
    log.info("method1 called method2");
}

public static void method2(Callable<Integer> callable) {
    Future<Integer> future = EXECUTOR.submit(task);
    future.get();
}

По какой-то причине, когда я использую maven для запуска моего приложения, где method1 вызывается 200 раз, я вижу запись в журнале за пределами Callable ("method1 звонил method2") 200 раз, но я вижу только ~ 100 записей, зарегистрированных для одной внутри Callable ("получил я через t секунд")

Что я делаю не так?

1 Ответ

0 голосов
/ 18 января 2020

Использование AsyncAppender решило проблему

...