2

私は最初の GWT ロガーを構成しようとしていますが、これまでのところログメッセージが JS コンソール (FF の Firebug) に出力されています:

<!-- Configure logging. -->
<inherits name="com.google.gwt.logging.Logging"/>
<set-property name="gwt.logging.logLevel" value="FINEST"/>
<set-property name="gwt.logging.enabled" value="TRUE"/>
<set-property name="gwt.logging.consoleHandler" value="ENABLED"/>
<set-property name="gwt.logging.developmentModeHandler" value="DISABLED" />
<set-property name="gwt.logging.popupHandler" value="DISABLED" />
<set-property name="gwt.logging.systemHandler" value="DISABLED" />
<set-property name="gwt.logging.firebugHandler" value="DISABLED" />
<set-property name="gwt.logging.simpleRemoteHandler" value="DISABLED" />

最終的に、非メッセージは に、SEVEREメッセージは に行きたいと思います。consoleHandlerSEVEREsimpleRemoteHandler

どうすればこれを達成できますか? SEVERE特定のログ レベルを 1 つのハンドラーに送信し、メッセージを別のハンドラーに送信するにはどうすればよいですか? 前もって感謝します!

4

1 に答える 1

0

gwt logging documentationによる通常の方法は次のとおりです。

GWT logging comes with a set of Handlers already defined and (by default) attached to the Root Logger. You can disable these handlers in the .gwt.xml file as discussed above, extend them, attach them to other loggers, and so forth.

したがって、この考えに基づいて、カスタマイズされたハンドラーをロガーに追加し、SEVEREレコードのみをサーバーに送信します。

  // This code is almost taken from the SimpleRemoteLogHandler.java because
  // it is a final class and we cannot extend it.
  logger.addHandler(new RemoteLogHandlerBase() {

    private AsyncCallback<String> callback = new AsyncCallback<String>() {
      public void onFailure(Throwable caught) {
        wireLogger.log(Level.SEVERE, "Remote logging failed: ", caught);
      }
      public void onSuccess(String result) {
        if (result != null) {
          wireLogger.severe("Remote logging failed: " + result);
        } else {
          wireLogger.finest("Remote logging message acknowledged");
        }
      }
    };

    private RemoteLoggingServiceAsync service = (RemoteLoggingServiceAsync) GWT.create(RemoteLoggingService.class);

    @Override
    public void publish(LogRecord record) {
      if (record.getLevel() == Level.SEVERE) {
        if (isLoggable(record)) {
          service.logOnServer(record, callback);
        }
      }
    }

  });
于 2013-06-22T11:39:33.240 に答える