(仅)在GWT中设置RemoteLogHandler的日志记录级别

时间:2011-11-24 02:47:58

标签: gwt logging log4j

我们可以只为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**"/>

3 个答案:

答案 0 :(得分:4)

您可以轻松地从SimpleRemoteLogHandler继承并覆盖它的isLoggable方法,如:

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

然后在您的模块的.gwt.xml文件中,您将设置GWT以用您自己的SimpleRemoteLogHandler替换GWT.create。这将起作用,因为GWT使用<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> 来实例化它。

{{1}}

答案 1 :(得分: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.");

答案 2 :(得分: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);
            }
        }