[gwt] 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 예외에 대한 가능한 해결 방법을 추가 했습니다. IE에서 개발자 도구를 한 번만 연 후에 만 ​​JavaScript가 작동하는 이유는 무엇입니까?

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