xxl-job icon indicating copy to clipboard operation
xxl-job copied to clipboard

最新的2.3.0版本在线程池的环境下,子线程打印日志丢失的问题

Open liunancun opened this issue 3 years ago • 3 comments

Please answer some questions before submitting your issue. Thanks!

Which version of XXL-JOB do you using?

2.3.0

Expected behavior

线程池环境中,子线程可以正常打印日志

Actual behavior

子线程打印日志丢失

Steps to reproduce the behavior

@Component public class DemoJobHandler {

private static final ExecutorService executorService = Executors.newFixedThreadPool(1);

@XxlJob("demoJobHandler")
public void execute() {

	XxlJobHelper.log("执行任务开始");

	executorService.execute(new Runnable() {
		@Override
		public void run() {
			System.out.println(Thread.currentThread().getName());

			XxlJobHelper.log("执行线程开始");

			try {
				Thread.sleep(5 * 1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}

			XxlJobHelper.log("执行线程结束");
		}
	});

	XxlJobHelper.log("执行任务结束");
}

}

Other information

怀疑是因为线程池复用线程导致的问题,所有子线程的日志都打印到第一次执行的任务里面了

liunancun avatar Mar 01 '21 12:03 liunancun

我也遇到这个问题了,线程服用导致日志乱了

duxiaojiao avatar Mar 19 '21 09:03 duxiaojiao

用threadlocal管理的上下文,放线程池里执行肯定会乱

axibug avatar Mar 16 '22 02:03 axibug

@xuxueli 大佬,这个线程池的问题有办法解决吗?之前版本可以用setJobLogFileName规避,新版本都没办法规避了

liunancun avatar May 27 '22 02:05 liunancun