본문 바로가기
컴퓨터관련

HtmlUnit ErrorLog 안보이게 설정하기

by 기록이답이다 2019. 3. 14.
반응형

HtmlUnit을 사용하다보면 errorLog가 콘솔창에 찍히는 경우가 있다.

그럴때는 아래와 같이 하면 콘솔창에 로그가 찍히지 않는다.


1
2
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

아래는 적용된 소스이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public static void saveHtml(String url, String fileName) throws IOException {
    URLEncoder.encode(url, "UTF-8");
     
        // HtmlUnitError Log off 처리
    java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
    java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);
     
    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    webClient.setCssErrorHandler(new ErrorHandler() {
        @Override
        public void warning(CSSParseException arg0) throws CSSException {
            return;
        }
         
        @Override
        public void fatalError(CSSParseException arg0) throws CSSException {
            return;
        }
         
        @Override
        public void error(CSSParseException arg0) throws CSSException {
            return;
        }
    });
    webClient.addRequestHeader("Accept-Language", "ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4, value");
    webClient.addRequestHeader("Accept-Charset", "windows-949,utf-8;q=0.7,*;q=0.3");
    webClient.getCookieManager().setCookiesEnabled(true);
     
    WebRequest webRequest = new WebRequest(new URL(url));
    HtmlPage page = webClient.getPage(webRequest);
     
    FileUtil.createFile(fileName, page.asXml());
     
    while(true) {
        File f = new File(fileName);
        if(f.isFile()) break;
        System.out.print(".");
    }
    //System.out.println(fileName + " created!!");
}
참고로 위 소스중에 FileUtil.createFile 부분은 아래내용이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static boolean createFile(String fileName, String fileText) {
    return createFile(fileName, fileText, "UTF-8");
}
 
public static boolean createFile(String fileName, String fileText, String charset) {
    File f = new File(fileName.substring(0, fileName.lastIndexOf(File.separator)));
    if(!f.isDirectory()) f.mkdirs();
     
    BufferedWriter bw = null;
    try {
        bw = new BufferedWriter(new FileWriterWithEncoding(fileName, charset));
         
        bw.write(fileText);
        return true;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        try { bw.close(); } catch(Exception ex) {}
    }
     
    return false;
}

결론은 

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

와 같이 하면 에러로그가 발생하지 않는다.

반응형