Java多線(xiàn)程調(diào)試如何完成信息輸出處理
Java多線(xiàn)程調(diào)試是很繁瑣的,但是還是需要我們不斷進(jìn)行相關(guān)的學(xué)習(xí)。下面我們就來(lái)看看在Java多線(xiàn)程調(diào)試中需要我們注意的相關(guān)關(guān)鍵點(diǎn)。為了查看中間結(jié)果一般采用將信息輸出到System.out中。
這樣就產(chǎn)生了一個(gè)問(wèn)題:很多個(gè)線(xiàn)程的輸出信息都簡(jiǎn)單的輸出到控制臺(tái)上,當(dāng)我們要查看每個(gè)線(xiàn)程自己處理的中間信息時(shí)很麻煩。最近在一個(gè)實(shí)踐項(xiàng)目中,使用了Log4j讓每個(gè)線(xiàn)程輸出到自己的log文件中,這樣在調(diào)試的時(shí)候很方便。
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
說(shuō)明:rootLogger為控制臺(tái),Crawler,LinkProcessor為兩個(gè)線(xiàn)程,分別輸出到Crawler.log和LinkProcessor.log文件中。
2. 在線(xiàn)程中添加日志代碼
- ……
- import org.apache.log4j.Logger;
- ……
- public class Crawler extends Thread {
- ……
- protected static Logger logger = Logger.
getLogger(Crawler.class);- ……
- logger.debug(msg);
- ……
- }
這樣,在線(xiàn)程運(yùn)行的時(shí)候會(huì)自動(dòng)產(chǎn)生兩個(gè)日志文件Crawler.log和LinkProcessor.log,并將中間結(jié)果輸出到各自的日志文件中。以上就是對(duì)Java多線(xiàn)程調(diào)試的相關(guān)代碼介紹。
【編輯推薦】