Multithreading 线程内的控制台日志记录不准确
我正在使用logback实现,并创建了一个Multithreading 线程内的控制台日志记录不准确,multithreading,logging,log4j,logback,Multithreading,Logging,Log4j,Logback,我正在使用logback实现,并创建了一个AsyncAppender,以便在线程内使用日志记录 线程类似于监视器:它使用从其他线程添加的对象的BlockingQueue,当队列不是空的,并且没有阻塞信号时,它记录队列的内容。同时,队列由几个线程填充 当线程从协调器获得停止信号时,它们会中断,因此不会在队列中添加更多内容 一旦出现阻塞信号(生产者线程已经中断),监视器队列就会中断,BlockingQueue为空 监视器线程的日志记录有两个问题: 生产者中断后,队列变为空,因此监视器线程也会立即中断
AsyncAppender
,以便在线程内使用日志记录
线程类似于监视器:它使用从其他线程添加的对象的BlockingQueue
,当队列不是空的,并且没有阻塞信号时,它记录队列的内容。同时,队列由几个线程填充
当线程从协调器获得停止信号时,它们会中断,因此不会在队列中添加更多内容
一旦出现阻塞信号(生产者线程已经中断),监视器队列就会中断,BlockingQueue
为空
监视器线程的日志记录有两个问题:
MDC
的情况,但我的问题有所不同:我必须在生产商生产时消费他们的产品,并且在他们生产完成后再消费,以防队列中还有东西
我还检查了线程中的LoggerContext
,它的启动为false。这不应该是真的吗
任何关于如何在中断线程之前显示所有内容并以正确顺序显示的想法都是有价值的
谢谢