투케이2K

81. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) onConsoleMessage 웹 콘솔 에러 발생 레벨 타입 확인 및 앱 로그 추가 로직 본문

투케이2K 로직정리

81. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) onConsoleMessage 웹 콘솔 에러 발생 레벨 타입 확인 및 앱 로그 추가 로직

투케이2K 2024. 10. 12. 09:16

[로직 정리]

정리 로직 : Android / 안드로이드

상태 : [android] 안드로이드 웹뷰 (webview) onConsoleMessage 웹 콘솔 에러 발생 레벨 타입 확인 및 앱 로그 추가 로직

 

[설 명]

 


// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

- 안드로이드 특정 URL 을 로드 하기 위한 웹뷰 클래스 생성 필요

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

1. 안드로이드 웹뷰 클래스에서 기본 자바스크립트 허용 설정 수행

  >> main_webview.getSettings().setJavaScriptEnabled(true);


2. 웹뷰 setWebChromeClient 크롬 클라이언트 생성 및 onConsoleMessage 이벤트 등록 실시

  main_webview.setWebChromeClient(new WebChromeClient() {

    // TODO [웹 브라우저 콘솔 로그 확인]
    @Override
    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
        // ---------------------------------------------------
        /*
        S_Log._E_(S_FinalData.LOG_Message_Res, new String[]{
                "URL :: " + String.valueOf(main_webview.getUrl()),
                "message [1] :: " + String.valueOf(consoleMessage.message()),
                "message [2] :: " + String.valueOf(consoleMessage.toString()),
                "sourceId :: " + String.valueOf(consoleMessage.sourceId())
        });
        // */
        // ---------------------------------------------------


        // [로직 처리 부분]


        // ---------------------------------------------------
        // TODO [chromium 크롬 자체 로그 출력] : 크롬 로그 검색 : [INFO:CONSOLE(533)]
        return super.onConsoleMessage(consoleMessage);
        // ---------------------------------------------------
    }        

  });


3. onConsoleMessage 메소드 내에서 ConsoleMessage 메시지 레벨 타입 확인 및 ERROR 인 경우나 메시지에 에러 발생 문구가 포함 되어 있는 경우 앱 내부 로그 파일에 저장 수행

  // TODO [에러 발생 로그 인 경우] : 네이티브 로그 파일 쌓기
  try {
      ConsoleMessage.MessageLevel lvl = consoleMessage.messageLevel();

      if (lvl == ConsoleMessage.MessageLevel.ERROR
              || String.valueOf(consoleMessage.message()).replaceAll(" ", "").toLowerCase().startsWith("error") == true
              || String.valueOf(consoleMessage.message()).replaceAll(" ", "").toLowerCase().startsWith("fail") == true
              || String.valueOf(consoleMessage.message()).replaceAll(" ", "").toLowerCase().startsWith("exception") == true
              || String.valueOf(consoleMessage.message()).replaceAll(" ", "").toLowerCase().startsWith("bug") == true) {

          S_Log._logSave_(null, true, ACTIVITY_NAME + " : onConsoleMessage : MessageLevel.ERROR : 웹 에러 발생 로그 저장", new String[]{
                  "Web_Url :: " + String.valueOf(main_webview.getUrl()),
                  "Web_LineNumber :: " + String.valueOf(consoleMessage.lineNumber()),
                  "Error_Message :: " + String.valueOf(consoleMessage.message())
          });

      }

  }
  catch (Exception e){
      e.printStackTrace();
  }

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[안드로이드 웹뷰 유틸 클래스]

https://blog.naver.com/kkh0977/222680670897?trackingCode=blog_bloghome_searchlist


[안드로이드 콘솔 메시지 에러 타입 레벨 확인 방법]

https://blog.naver.com/kkh0977/223523006974?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments