저는 org.apache.log4j.Logger를 사용 중이며 htmlunit에 대한 디버그 메시지를 해제하려고합니다. 내가하는 일은 아무 것도없는 것처럼 보인다. 나는 계속 Http.wire, Http.headers, etc 디버그 메시지를 받고있다. 나는 루트 로거는 내 코드에서이 줄을 배치하려고HtmlUnit 로깅을 끌 수 없습니다.
을 디버깅 설정 :
log4j.logger.com.gargoylesoftware.htmlunit=WARN
이것은이다 : 나는 또한 나의 log4j.properties 파일에이 줄을 배치하려고
org.apache.log4j.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(org.apache.log4j.Level.OFF);
내 log4j.properties 파일의 내용 :
log4j.logger.com.gargoylesoftware.htmlunit=ERROR
log4j.logger.org.apache.commons.httpclient=ERROR
# Tell the root lodger what appenders and level to use
log4j.rootLogger=DEBUG, A1, A2
##### Console Appender #####
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
##### File Appender #####
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=/var/log/mylogfile.log
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
log4j.appender.A2.Append=false
어떤 도움을 주시면 감사하겠습니다.
편집 11/15/16 (추가 테스트 코드)
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.*;
import org.junit.*;
import static org.junit.Assert.*;
import org.apache.commons.logging.*;
import org.apache.log4j.*;
public class Test01
{
@Test
public void homePage() throws Exception
{
LogFactory.getFactory().setAttribute("com.gargoylesoftware.htmlunit", "org.apache.commons.logging.impl.Log4JLogger");
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Log4JLogger");
org.apache.log4j.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.WARN);
org.apache.log4j.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.WARN);
Logger.getRootLogger().setLevel(Level.DEBUG);
Logger.getRootLogger().debug("Start");
WebClient webClient = new WebClient()
HtmlPage page = webClient.getPage("https://google.com");
Logger.getRootLogger().debug("End");
}
감사 HTMLClient 로깅의 미세 제어 할 수 있도록 예제 log4j.properties 파일입니다. 속성 파일의 log4j.logger.com.gargoylesoftware.htmlunit = ERROR는 아무 작업도 수행하지 않습니다. 코드 스 니펫은 작동하지만 루트 로거의 디버그 로그를 끕니다. 나는 행운없이 SimpleLog와 Log4JLogger를 시도했다. 내 log4j.properties 파일의 설정으로 여러 로거에 대해 다른 레벨을 설정할 수없는 이유를 이해하는 데 문제가 있습니다. Log4j.properties 파일을 사용하여 원본 질문을 업데이트했습니다. – zappullae
BTW. Authorize.net에서 HTML 와이어 세부 정보를 로깅하는 것과 동일한 문제가 있습니다. – zappullae
이것을 실험 한 후에는 루트 로거 만 사용됩니다. org.apache.commons.logging.Log 및 com.gargoylesoftware.html 유닛의 레벨 및 속성 설정은 영향을 미치지 않습니다. 작동하는 유일한 방법은 log4j.properties 파일에서 레벨을 설정하거나 Logger.getRootLogger(). setLevel (Level.WARN)을 수행하는 경우입니다. 이러한 솔루션은 모두 제어하려는 개별 로그뿐만 아니라 모든 로깅에 영향을 미칩니다. 이게 그렇게 힘들지는 않을거야, 내가 놓친 게 있니? – zappullae