반응형
HtmlUnit을 사용하다보면 errorLog가 콘솔창에 찍히는 경우가 있다.
그럴때는 아래와 같이 하면 콘솔창에 로그가 찍히지 않는다.
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);
아래는 적용된 소스이다.
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 부분은 아래내용이다.
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);
와 같이 하면 에러로그가 발생하지 않는다.
반응형
'컴퓨터관련' 카테고리의 다른 글
python 이용하여 로또 사이트 크롤링 - 당첨정보 가져오기 및 분석 (0) | 2019.03.06 |
---|---|
한개의 아이피에 여러개의 포트로 가상호스트 설정하기 - Apache 2.4 (0) | 2019.03.01 |
python 이용하여 공공DataPortal 제공서비스 목록 파일로 저장하기(beautifulsoup, selenium 이용) (0) | 2019.02.27 |
정규표현식... (0) | 2017.09.07 |
chmod 디렉토리만 또는 파일만 지정하기(하위디렉토리 포함) (0) | 2017.02.11 |