2012-07-29 70 views
4

爲什麼?使用SuperDevMode記錄。 System.out.println不起作用

使用時的System.out.println在客戶端 - 什麼是CodeServer的控制檯輸出。

現在我登錄瀏覽器控制檯,但如何登錄系統控制檯?

p.s.我知道登錄gwt的最佳方式是使用com.google.gwt.logging.Logging模塊。它現在也在使用系統控制檯。

回答

4

超級開發模式基本上是比生產編譯相同的(它只是不優化)

在生產(編譯的JavaScript)的System.out沒有打印任何東西到你的Java服務器端程序。您的代碼在Javascript VM中運行,它需要通過網絡打印到java控制檯。

如果您在開發模式下運行,您正在連接到瀏覽器中的插件的JVM內部運行。這就是System.out工作的原因。

1

我設置了一個遠程記錄器來解決這個問題。通過這種方式,所有客戶端日誌語句都會發送到日誌記錄仍在工作的服務器。你可以在這裏找到說明:Setup a remoteLoggingServlet in GWT

然後你可以使用普通的java util記錄。

import java.util.logging.Logger; 
private static Logger log = Logger.getLogger("mylogger"); 

不幸的是JavaScript的堆棧跟蹤。我還沒有想出如何獲得適當的Java的呢。 希望這有助於!

1

不解決方案的最漂亮的,但你可以創建這樣的本地JSNI方法:

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

然後只要致電:

debug("text here"). 

,它應該向控制檯輸出。