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

(仅限)设置GWT中RemoteLogHandler的日志记录级别,gwt,logging,log4j,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.

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


您可以轻松地从
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>

您可以轻松地从
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>

而不是使用
gwt.xml
配置(将
gwt.logging.simpleRemoteHandler
属性设置为其默认的
已禁用
),实例化并自己添加
simpleRemoteHandler

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

// Later...

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

不要使用
gwt.xml
配置(将
gwt.logging.simpleRemoteHandler
属性设置为其默认的
已禁用
),而是自己实例化并添加
simpleRemoteHandler

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

// Later...

Logger.getLogger("myLogger").log(Level.SEVERE, "A very important message.");
另一种解决方案:(不会丢失任何日志,但可能会捕获一个或两个较低级别的日志)

另一种解决方案:(不会丢失任何日志,但可能会捕获一个或两个较低级别的日志)