Java多線程調試如何完成信息輸出處理
Java多線程調試是很繁瑣的,但是還是需要我們不斷進行相關的學習。下面我們就來看看在Java多線程調試中需要我們注意的相關關鍵點。為了查看中間結果一般采用將信息輸出到System.out中。
這樣就產生了一個問題:很多個線程的輸出信息都簡單的輸出到控制臺上,當我們要查看每個線程自己處理的中間信息時很麻煩。最近在一個實踐項目中,使用了Log4j讓每個線程輸出到自己的log文件中,這樣在調試的時候很方便。
1. 配置log4j.properties文件
- lg4j.rootLogger=DEBUG,stdout
- # stdout is set to be a ConsoleAppender.
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.
PatternLayout- log4j.appender.stdout.layout.ConversionPattern=
[%t] (%F,%L) - %m%n- log4j.additivity.log4j.stdout=false
- # com.se.crawler.Crawler Appender.
- log4j.logger.com.se.Crawler.Crawler=DEBUG,Crawler
- log4j.appender.Crawler=org.apache.log4j.FileAppender
- log4j.appender.Crawler.File=Crawler.log
- log4j.appender.Crawler.Append=false
- log4j.appender.Crawler.layout=org.apache.log4j.PatternLayout
- log4j.appender.Crawler.layout.ConversionPattern=%m%n
- log4j.additivity.com.se.crawler.Crawler=false
- # com.se.crawler.LinkProcessor Appender.
- log4j.logger.com.se.crawler.LinkProcessor=DEBUG,Link
Processor- log4j.appender.LinkProcessor=org.apache.log4j.FileAppender
- log4j.appender.LinkProcessor.File=LinkProcessor.log
- log4j.appender.LinkProcessor.Append=false
- log4j.appender.LinkProcessor.layout=org.apache.log4j.
PatternLayout- log4j.appender.LinkProcessor.layout.ConversionPattern=%m%n
- log4j.additivity.com.se.crawler.LinkProcessor=false
說明:rootLogger為控制臺,Crawler,LinkProcessor為兩個線程,分別輸出到Crawler.log和LinkProcessor.log文件中。
2. 在線程中添加日志代碼
- ……
- import org.apache.log4j.Logger;
- ……
- public class Crawler extends Thread {
- ……
- protected static Logger logger = Logger.
getLogger(Crawler.class);- ……
- logger.debug(msg);
- ……
- }
這樣,在線程運行的時候會自動產生兩個日志文件Crawler.log和LinkProcessor.log,并將中間結果輸出到各自的日志文件中。以上就是對Java多線程調試的相關代碼介紹。
【編輯推薦】