Java HtmlUnitDriver在我的个人Log4J文件中写入日志

Java HtmlUnitDriver在我的个人Log4J文件中写入日志,java,log4j,htmlunit,htmlunit-driver,Java,Log4j,Htmlunit,Htmlunit Driver,我为3个不同的站点编写了爬虫程序,并在3个线程中运行爬虫程序。对于每个爬虫,我使用单个记录器。 我的“log4j.properties”文件如下所示: log4j.rootLogger=TRACE, ZDNET, CNET, GOOGLEPLAY log4j.appender.ZDNET=org.apache.log4j.RollingFileAppender log4j.appender.ZDNET.File=logs/zdnet.log log4j.appender.ZDNET.MaxFi

我为3个不同的站点编写了爬虫程序,并在3个线程中运行爬虫程序。对于每个爬虫,我使用单个记录器。 我的“log4j.properties”文件如下所示:

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
2015-06-16 02:47:08调试-使用WebRequest[]获取名为“”的窗口的页面
2015-06-16 02:47:08调试-setEnclosedPage:HtmlPage(关于:空白)@945834833
2015-06-16 02:47:08调试-删除儿童
2015-06-16 02:47:08调试-在HTTP头中找到编码:“UTF-8”。
2015-06-16 02:47:08调试-将java.lang.Object映射到HTMLCollection
2015-06-16 02:47:08调试-将com.gargoylesoftware.htmlunit.html.HtmlSpan映射到HTMLSpanElement
知道为什么会这样吗?

因为和都使用log4j来编写日志

您的
rootLogger
定义了
trace
级别,因此它会写入所有内容

请添加以下内容,以便仅允许HttpClient和HtmlUnit的
错误
级别消息

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

好的,谢谢。但这对我不好。因为在最初的10秒内,我得到了大约100行带有“错误”日志的代码(但所有代码都正常)
log4j.logger.com.gargoylesoftware.htmlunit=OFF
log4j.logger.org.apache.http=OFF
解决了我的问题。