반응형
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);
와 같이 하면 에러로그가 발생하지 않는다.
반응형
'컴퓨터관련' 카테고리의 다른 글
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 |