我们可以只为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 :(得分: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);
}
}