2015-06-15 54 views
0

我爲3個不同的站點編寫了爬網程序,並在3個線程中運行爬網程序。對於每個爬蟲,我使用單個記錄器。 我 'log4j.properties' 文件看起來像:HtmlUnitDriver在我的個人Log4J文件中寫入日誌

log4j.rootLogger=TRACE, ZDNET, CNET, GOOGLEPLAY 

log4j.appender.ZDNET=org.apache.log4j.RollingFileAppender 
log4j.appender.ZDNET.File=logs/zdnet.log 
log4j.appender.ZDNET.MaxFileSize=20MB 
log4j.appender.ZDNET.MaxBackupIndex=100 
log4j.appender.ZDNET.layout=org.apache.log4j.PatternLayout 
log4j.appender.ZDNET.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n 

log4j.appender.CNET=org.apache.log4j.RollingFileAppender 
log4j.appender.CNET.File=logs/cnet.log 
log4j.appender.CNET.MaxFileSize=20MB 
log4j.appender.CNET.MaxBackupIndex=100 
log4j.appender.CNET.layout=org.apache.log4j.PatternLayout 
log4j.appender.CNET.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n 

log4j.appender.GOOGLEPLAY=org.apache.log4j.RollingFileAppender 
log4j.appender.GOOGLEPLAY.File=logs/googlePlay.log 
log4j.appender.GOOGLEPLAY.MaxFileSize=20MB 
log4j.appender.GOOGLEPLAY.MaxBackupIndex=100 
log4j.appender.GOOGLEPLAY.layout=org.apache.log4j.PatternLayout 
log4j.appender.GOOGLEPLAY.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n 

log4j.category.zdNetLogger=DEBUG, ZDNET 
log4j.additivity.zdNetLogger=false 

log4j.category.cNetLogger=DEBUG, CNET 
log4j.additivity.cNetLogger=false 

log4j.category.googlePlayLogger=DEBUG, GOOGLEPLAY 
log4j.additivity.googlePlayLogger=false 

在java中,我使用下面的代碼寫我的日誌

final Logger APK_LOG = Logger.getLogger("googlePlayLogger"); 
final Logger C_NET_LOG = Logger.getLogger("cNetLogger"); 
final Logger ZD_NET_LOG = Logger.getLogger("zdNetLogger"); 
.... 
ZD_NET_LOG.info("1"); 
C_NET_LOG.info("2"); 
APK_LOG.info("3"); 

一切工作正常,直到我開始使用Selenium + +的HtmlUnit HtmlUnitDriver。 之後,當我運行我的程序時,3個日誌文件(zdnet.log,cnet.log,googlePlay.log)由來自HtmlUnitDriver的日誌填充。從我的文件(zdnet.log,cnet.log,googlePlay.log)之後 登錄信息:

2015-06-16 02:47:08 DEBUG - Get page for window named '', using WebRequest[<url="about:blank", GET, EncodingType[name=application/x-www-form-urlencoded], [], {Accept=image/gif, image/jpeg, image/pjpeg, image/pjpeg, */*, Accept-Encoding=gzip, deflate}, null>] 
2015-06-16 02:47:08 DEBUG - setEnclosedPage: HtmlPage(about:blank)@945834833 
2015-06-16 02:47:08 DEBUG - destroyChildren 
2015-06-16 02:47:08 DEBUG - Encoding found in HTTP headers: 'UTF-8'. 
2015-06-16 02:47:08 DEBUG - Mapping java.lang.Object to HTMLCollection 
2015-06-16 02:47:08 DEBUG - Mapping com.gargoylesoftware.htmlunit.html.HtmlSpan to HTMLSpanElement 

爲什麼會發生任何想法?

回答

0

因爲HttpClientHtmlUnit都使用log4j來寫他們的日誌。

你的rootLogger定義trace的水平,所以它寫的一切。

請在下面添加以僅允許error關於HttpClient和HtmlUnit的級別消息。

log4j.logger.com.gargoylesoftware.htmlunit=error 
log4j.logger.org.apache.http=error 
+0

好的,謝謝。但這對我並不好。因爲在前10秒內,我得到了約100行'錯誤'日誌(但所有工作正常)。 'log4j.logger.com.gargoylesoftware.htmlunit = OFF' 'log4j.logger.org.apache.http = OFF' 解決了我的問題。 – user3601768