IT

GWT에서 콘솔에 인쇄하는 방법

lottoking 2020. 9. 9. 08:15
반응형

GWT에서 콘솔에 인쇄하는 방법


GWT 애플리케이션을위한 중이며 테스트 목적으로 콘솔에 몇 가지 항목을 인쇄해야합니다. System.out.printlnGWT.log작동하지 않습니다. 누구에게 유전자가 있습니까?


문서 인용 :

GWT 로깅을 추가하는 것은 다음 코드 예제처럼 매우 간단합니다. 그러나 — 로깅이 작동하는 방식과이를 구성하는 방법을 이해하는 것이 중요합니다.

http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html

로깅을 활성화하는 가장 간단한 방법은 다음과 가능합니다.

# In your .gwt.xml file
<inherits name="com.google.gwt.logging.Logging"/>

# In your .java file
Logger logger = java.util.logging.Logger.getLogger("NameOfYourLogger");
logger.log(Level.SEVERE, "this message should get logged");

PhoneGap (및 gwt-phonegap)을 Android 장치를 통해 / 에뮬레이터에 배포 된 GWT 애플리케이션의 프로세스에서 작업을 수행해야합니다. 위와 같이 System.out.println () 또는 GWT (코드 선언 포함)이 Android의 logcat에 표시되지 않고 console.log에 대한 간단한 JSNI 래퍼를 사용했습니다.

  public void onModuleLoad()
  {
    Logger logger = Logger.getLogger("Test1.java");
    logger.log(Level.INFO, "ash: starting onModuleLoad (1)"); // not in logcat
    System.out.println( "ash: starting onModuleLoad (2)" ); // not in logcat
    consoleLog( "ash: starting onModuleLoad (3)" ); // This shows up
    ...
  }

  native void consoleLog( String message) /*-{
      console.log( "me:" + message );
  }-*/;

GWT 버전 2.6.0에서 메소드 GWT.log는 브라우저 콘솔에 메시지를 작성하는 방법을 사용할 수 없습니다.


브라우저 콘솔에 로그인하면 매우 간단한 방법으로 기본을 사용하여 수행 할 수 있습니다. 대부분에 매우 유용합니다.

원하는 위치에서 보낼 수있는 브라우저 콘솔에 기록됩니다.

public static native void console(String text)
/*-{
    console.log(text);
}-*/;

GWT에서 사용에 대한 자세한 정보 : http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html


mreppyStrelok 의 답변에 표시된 다양한 가능성 을 하나의 스 니펫 으로 요약하십시오 . 또한 여기에 설명 된대로 IE 예외에 대한 가능한 해결 방법을 추가했습니다. JavaScript는 IE에서 개발자 도구를 한 번만 연 후에 만 ​​작동하고 있습니까?

    java.util.logging.Logger logger = Logger.getLogger(this.getClass().getSimpleName());

    native void jsConsoleLog(String message) /*-{
        try {
            console.log(message);
        } catch (e) {
        }
    }-*/;

    private void log(final String message) {
        // Logs to Dev mode console only
        GWT.log(message);
        // Logs to Dev mode and JavaScript console (requires configuration)
        this.logger.log(Level.FINEST, message);
        // Logs to JavaScript console only
        jsConsoleLog(message);

대체 콘솔을 사용하는 또 다른 변형 ...

이 클래스 추가 :

package XXX.XXX.XXX.XXX;

public class Debug {
    private static boolean isEnabled_ = false;
    public static void enable() { isEnabled_ = true; }
    public static void setEnabled( final boolean isEnabled ) 
    { isEnabled_ = isEnabled; }

    public static void log( final String s ) 
    { if( isEnabled_ ) nativeConsoleLog( s ); }

    private static native void nativeConsoleLog( String s ) 
    /*-{ console.log( s ); }-*/;
}

그런 다음 앱을 시작할 때와 같이 어느 시점에서 시작할 때 활성화합니다.

public class XXXXXX implements EntryPoint {
    @Override
    public void onModuleLoad() {
        Debug.enable();
        ...
    }
}

그런 다음 다음과 같이 사용하십시오.

Debug.log("Hello World!");

나도이 문제가 있었다. GWT 로그는 작동하지만 모두 자바 스크립트로 변환 되었기 때문에 클라이언트 출력으로 인쇄되므로 브라우저의 콘솔을 보면 거기에있을 것입니다. Google 크롬에서 오른쪽 상단의 세 줄 맞춤 설정 버튼을 클릭하고 도구-> 개발자 도구를 클릭하면 콘솔이 나타납니다. 귀하가 원하는 진술이 거기에있을 것입니다. 또한 Ctrl + Shift + I가 바로 가기입니다. 서버에 인쇄하려면 로거 핸들러 등이 순서대로되어 있다고 생각합니까?


첫 번째 답변의 문서 URL은 이미 다른 위치에 기록하는 다른 구성 옵션을 제공합니다. 내가 작성한이 프레임 워크는 유용한 API를 제공하며 서버 측 로깅 구현을 선택할 수 있습니다. 보세요 : https://code.google.com/p/gwt-usefull-logging/


GWT 개발자 모드 를 사용하는 것이 좋습니다 . 코드 서버에서 자동 컴파일 및 코드 할당을 유발하는 약간의 오버 헤드를 추가하지만 애플리케이션의 클라이언트 측에서 일부 예외가 발생하는 경우 매우 명확합니다. 내 말은, 크롬 콘솔 (또는 방화범 또는 내장 된 브라우저 디버깅 도구)이 그러한 상황에서 너무 많은 것을 말하지 않는다는 것을 의미합니다. 저를 믿으십시오. 무슨 일이 일어나고 있는지 파악하려고 할 때 NullPointerException을 찾는 것이 목에 고통 스럽습니다. 코드를 경고하여.


브라우저 콘솔에 인쇄하기 위해 다음과 같이 사용하고 있습니다.

EventLogger.java

public class EventLogger {
    public static void logEvent(String subsys, String grp, String type) {
        logEvent(GWT.getModuleName(), subsys, grp,
                Duration.currentTimeMillis(), type);
    }

    public static native void logEvent(String module, String subsys,
                                       String grp, double millis, String type)
/*-{
    if ($wnd.__gwtStatsEvent) {
        $wnd.__gwtStatsEvent({
            'moduleName':module,
            'subSystem':subsys,
            'evtGroup':grp,
            'millis':millis,
            'type':type
        });
    }
}-*/;
}

참고 URL : https://stackoverflow.com/questions/9247424/how-to-print-to-the-console-in-gwt

반응형