2011-11-24 119 views
1

只能爲RemoteLogHandler設置日誌記錄級別嗎?(僅限)在GWT中設置RemoteLogHandler的日誌記錄級別

<inherits name="com.google.gwt.logging.Logging" /> 
<set-property name='gwt.logging.enabled' value='TRUE' /> 
<set-property name="gwt.logging.logLevel" value="**WARNING**"/> 

<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED"/> 
<set-property name='gwt.logging.popupHandler' value='ENABLED' /> 

//我們想這一點,但它不工作:

<set-property name="gwt.logging.simpleRemoteHandler.logLevel" value="**SEVERE**"/> 

回答

0

另一種解決方案:(不會錯過任何日誌,但它可能會捕獲一個或兩個較低級別的日誌)

 for (final java.util.logging.Handler h : Logger.getLogger("").getHandlers()) 
     { 
      if (h instanceof com.google.gwt.logging.client.SimpleRemoteLogHandler) 
      { 
       ((com.google.gwt.logging.client.SimpleRemoteLogHandler) h).setLevel(logLevel); 
      } 
     } 
4

你可以輕鬆地從SimpleRemoteLogHandler繼承並重寫它的isLoggable方法等來:

@Override 
public boolean isLoggable(LogRecord record) { 
    return super.isLoggable(record) && record.getLevel() == Level.SEVERE; 
} 

然後在.gwt.xml文件爲您的模塊中,你將設立GWT用自己取代SimpleRemoteLogHandler。這將起作用,因爲GWT使用GWT.create來實例化它。

<replace-with class="com.package.YourSimpleRemoteLogHandler"> 
    <when-type-is class="com.google.gwt.logging.client.SimpleRemoteLogHandler" /> 
    <any> 
     <when-property-is name="gwt.logging.enabled" value="TRUE" /> 
     <when-property-is name="gwt.logging.simpleRemoteHandler" value="ENABLED" /> 
    </any> 
</replace-with> 
2

而不是使用gwt.xml配置的(離開gwt.logging.simpleRemoteHandler屬性設置爲默認DISABLED),實例化並添加SimpleRemoteLogHandler自己:

SimpleRemoteLogHandler handler = new SimpleRemoteLogHandler(); 
handler.setLevel(Level.SEVERE); 
Logger.getLogger("").addHandler(handler); 

// Later... 

Logger.getLogger("myLogger").log(Level.SEVERE, "A very important message.");