package tv.dyndns.kishibe.qmaclone.client.util;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import tv.dyndns.kishibe.qmaclone.client.UserData;
import com.google.common.base.MoreObjects;
import com.google.gwt.core.client.GWT;
import com.google.gwt.logging.client.RemoteLogHandlerBase;
import com.google.gwt.logging.shared.RemoteLoggingService;
import com.google.gwt.logging.shared.RemoteLoggingServiceAsync;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class DetailRemoteLogger extends RemoteLogHandlerBase {
private final AsyncCallback<String> callback = new AsyncCallback<String>() {
@Override
public void onSuccess(String result) {
if (result != null) {
wireLogger.severe("Remote logging failed: " + result);
} else {
wireLogger.finest("Remote logging message acknowledged");
}
}
@Override
public void onFailure(Throwable caught) {
wireLogger.log(Level.SEVERE, "Remote logging failed: ", caught);
}
};
private final RemoteLoggingServiceAsync service = (RemoteLoggingServiceAsync) GWT
.create(RemoteLoggingService.class);
@Override
public void publish(LogRecord record) {
if (isLoggable(record)) {
record.setMessage(MoreObjects.toStringHelper(this)
.add("userCode", UserData.get().getUserCode()).add("message", record.getMessage())
.add("userAgent", Window.Navigator.getUserAgent()).toString());
service.logOnServer(record, callback);
}
}
}