2011-11-24 117 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.");