HtmlUnit 경고 해제
HtmlUnit의 경고, 메모, 오류를 어떻게 해제 할 수 있습니까?
코드 시작 부분에 기재하십시오. 그것은 더러운 입을 닫을 것입니다.
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
webClient = new WebClient(bv);
webClient.setCssEnabled(false);
webClient.setIncorrectnessListener(new IncorrectnessListener() {
@Override
public void notify(String arg0, Object arg1) {
// TODO Auto-generated method stub
}
});
webClient.setCssErrorHandler(new ErrorHandler() {
@Override
public void warning(CSSParseException exception) throws CSSException {
// TODO Auto-generated method stub
}
@Override
public void fatalError(CSSParseException exception) throws CSSException {
// TODO Auto-generated method stub
}
@Override
public void error(CSSParseException exception) throws CSSException {
// TODO Auto-generated method stub
}
});
webClient.setJavaScriptErrorListener(new JavaScriptErrorListener() {
@Override
public void timeoutError(HtmlPage arg0, long arg1, long arg2) {
// TODO Auto-generated method stub
}
@Override
public void scriptException(HtmlPage arg0, ScriptException arg1) {
// TODO Auto-generated method stub
}
@Override
public void malformedScriptURL(HtmlPage arg0, String arg1, MalformedURLException arg2) {
// TODO Auto-generated method stub
}
@Override
public void loadScriptError(HtmlPage arg0, URL arg1, Exception arg2) {
// TODO Auto-generated method stub
}
});
webClient.setHTMLParserListener(new HTMLParserListener() {
@Override
public void warning(String arg0, URL arg1, int arg2, int arg3, String arg4) {
// TODO Auto-generated method stub
}
@Override
public void error(String arg0, URL arg1, int arg2, int arg3, String arg4) {
// TODO Auto-generated method stub
}
});
webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setThrowExceptionOnScriptError(false);
Arsen Zahray의 답변 에있는 코드는 HtmlUnit에서 생성 된 거의 모든 로그를 제거하는 데 도움이됩니다.
그러나 한 번의 편집으로 모두 제거 할 수 있습니다. 사용하다 :
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
대신에 :
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
최신 버전의 HtmlUnit에서 모든 출력을 제거 정적 블록이나 기본 클래스에 다음 줄을 추가하기 만하면됩니다.
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
다른 답변 상태로 어떤 방법도 재정의 할 필요가 없습니다.
여기 에서 HtmlUnit 로깅을 조작하는 방법 에 대한 정보를 얻을 수 있습니다 .
이것은 log4j.properties
HtmlUnit 구성 요소에서 부담 메시지를하기 위해 내가 추가 한 것 입니다.
# Set specific logger levels.
log4j.logger.org.mortbay.log=fatal
log4j.logger.org.apache.http=fatal
log4j.logger.org.apache.http.headers=fatal
log4j.logger.org.apache.http.wire=fatal
# For HttpClient 3, which is used by FirefoxDriver
log4j.logger.httpclient.wire=fatal
log4j.logger.org.apache.commons=fatal
log4j.logger.com.gargoylesoftware.htmlunit=fatal
log4j.logger.com.gargoylesoftware.htmlunit.WebTestCase=fatal
# Change this to TRACE when enabling the debugger.
log4j.logger.com.gargoylesoftware.htmlunit.javascript.DebugFrameImpl=fatal
다음 코드를 사용하여 로깅 수준을 해제하십시오.
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
아래 코드를 사용하고 완벽하게 작동합니다.
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
다음을 추가하십시오 log4.properties
.
log4j.logger.com.gargoylesoftware.htmlunit=fatal
로거를. 그러나 로그에 흔하지 않은 문제가 있으므로 좋은 해결책이 아닙니다.
HtmlUnit은 중요하지 않은 예외, 경고 등을 많이 생성한다는 것을 알고 있습니다. 다음을 사용하여 몇 가지를 사용할 수 있습니다.
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);
상기 보고이 문서를 .
테스트 스위트에서 사용하는 샘플 log4 파일이 있습니다. 여기 에서 찾을 수 있으며 원하는 경우 모든 것을 비활성화 할 수 있습니다.
이것은 나를 위해 일했습니다.
@Test
public void homePage() throws Exception {
final WebClient webClient = new WebClient();
webClient.setThrowExceptionOnScriptError(false);
final HtmlPage page = webClient.getPage("http://localhost:8080/web/guest/home");
이제 HtmlUnit 2.9에서는 WebClient.setCssErrorHandler(new SilentCssErrorHandler())
경고와 오류를 무시할 수 있습니다. 예를 들면 :
@Override
protected WebClient modifyWebClient(WebClient client) {
// currently does nothing, but may be changed in future versions
WebClient modifiedClient = super.modifyWebClient(client);
modifiedClient.getOptions().setThrowExceptionOnScriptError(false);
modifiedClient.setCssErrorHandler(new SilentCssErrorHandler());
return modifiedClient;
}
코드에 다음을 추가 추가합니다.
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
기본적으로 이것은 로거가 로거 로그를 만들어 NoOpLog
로그 정보를 어디에도 쓰지 작성합니다.
나를 위해 잘 작동 한 한 가지 옵션은 HtmlUnit 로거를 다른 파일에 기록하도록 변경하여 잠시 참조해야 할 경우 오류가 발생하고 주 로그를 어지럽히 지 않도록하는 것입니다. 다음은 log4j
내가 변경 한 내용입니다 log4j.properties
.
log4j.logger.com.gargoylesoftware.htmlunit=ERROR, HTMLUNIT
log4j.additivity.com.gargoylesoftware.htmlunit=false
log4j.appender.HTMLUNIT = org.apache.log4j.RollingFileAppender
log4j.appender.HTMLUNIT.layout=org.apache.log4j.PatternLayout
log4j.appender.HTMLUNIT.layout.ConversionPattern=%m%n
log4j.appender.HTMLUNIT.File=logs/HtmlUnitLog4j.log
log4j.appender.HTMLUNIT.MaxFileSize=5MB
log4j.appender.HTMLUNIT.MaxBackupIndex=5
JavaScript 지원이 필요하지 않은 경우 비활성화하는 가장 쉬운 방법입니다.
WebClient client = new WebClient(BrowserVersion.BEST_SUPPORTED);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setJavaScriptEnabled(false);
client.setCssErrorHandler(new SilentCssErrorHandler());
client.setHTMLParserListener(new HTMLParserListener() {
@Override
public void error(String message, URL url, String html, int line, int column, String key) {
}
@Override
public void warning(String message, URL url, String html, int line, int column, String key) {
}
});
또한 예외를 비활성화하고 실패 상태 코드, JavaScript, CSS 오류 및 HTML 구문 분석 오류에 로그온합니다.
JavaScript 지원이 필요한 경우 JavaScript 오류에 대한 사용자 정의 구현을 사용할 수 있습니다.
client.setJavaScriptErrorListener(new JavaScriptErrorListener() {
@Override
public void timeoutError(HtmlPage arg0, long arg1, long arg2) {
}
@Override
public void scriptException(HtmlPage arg0, ScriptException arg1) {
}
@Override
public void malformedScriptURL(HtmlPage arg0, String arg1, MalformedURLException arg2) {
}
@Override
public void loadScriptError(HtmlPage arg0, URL arg1, Exception arg2) {
}
});
필요하지 않은 경우 비활성화 할 수도 있습니다.
client.getOptions().setCssEnabled(false);
따라서 다른 로거를 구성 할 필요가 없습니다.
참고 URL : https://stackoverflow.com/questions/3600557/turning-htmlunit-warnings-off
'ProgramingTip' 카테고리의 다른 글
UIViewController 탄생의 과정은 무엇입니까 (어떤 방법이 뒤 따르는가)? (0) | 2020.12.13 |
---|---|
배열에서 날짜 요소 삭제 (0) | 2020.12.13 |
복사 전용 백업 옵션은 무엇을 의미합니까? (0) | 2020.12.12 |
Android 및 iPhone 용 모바일 앱에서 추천 프로그램을 구현하는 방법 (0) | 2020.12.12 |
R의 roxygen2 문서에서 다른 패키지에 연결 (0) | 2020.12.12 |