/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.logger.slf4j.gwtbackend; import org.slf4j.helpers.FormattingTuple; import org.slf4j.helpers.MarkerIgnoringBase; import org.slf4j.helpers.MessageFormatter; import java.util.logging.Level; import java.util.logging.Logger; import static java.util.logging.Level.FINE; import static java.util.logging.Level.FINEST; import static java.util.logging.Level.INFO; import static java.util.logging.Level.SEVERE; import static java.util.logging.Level.WARNING; /** * A wrapper over {@link java.util.logging.Logger} supported since GWT 2.1. */ public class GwtLoggerSlf4jBackend extends MarkerIgnoringBase { private final Logger logger; public GwtLoggerSlf4jBackend(String name) { logger = Logger.getLogger(name); } @Override public boolean isTraceEnabled() { return logger.isLoggable(FINEST); } @Override public void trace(String msg) { log(FINEST, msg, null); } @Override public void trace(String format, Object arg) { formatAndLog(FINEST, format, arg); } @Override public void trace(String format, Object arg1, Object arg2) { formatAndLog(FINEST, format, arg1, arg2); } @Override public void trace(String format, Object... argArray) { formatAndLog(FINEST, format, argArray); } @Override public void trace(String msg, Throwable t) { log(FINEST, msg, t); } @Override public boolean isDebugEnabled() { return logger.isLoggable(FINE); } @Override public void debug(String msg) { log(FINE, msg, null); } @Override public void debug(String format, Object arg) { formatAndLog(FINE, format, arg); } @Override public void debug(String format, Object arg1, Object arg2) { formatAndLog(FINE, format, arg1, arg2); } @Override public void debug(String format, Object... argArray) { formatAndLog(FINE, format, argArray); } @Override public void debug(String msg, Throwable t) { log(FINE, msg, t); } @Override public boolean isInfoEnabled() { return logger.isLoggable(INFO); } @Override public void info(String msg) { log(INFO, msg, null); } @Override public void info(String format, Object arg) { formatAndLog(INFO, format, arg); } @Override public void info(String format, Object arg1, Object arg2) { formatAndLog(INFO, format, arg1, arg2); } @Override public void info(String format, Object... argArray) { formatAndLog(INFO, format, argArray); } @Override public void info(String msg, Throwable t) { log(INFO, msg, t); } @Override public boolean isWarnEnabled() { return logger.isLoggable(WARNING); } @Override public void warn(String msg) { log(WARNING, msg, null); } @Override public void warn(String format, Object arg) { formatAndLog(WARNING, format, arg); } @Override public void warn(String format, Object arg1, Object arg2) { formatAndLog(WARNING, format, arg1, arg2); } @Override public void warn(String format, Object... argArray) { formatAndLog(WARNING, format, argArray); } @Override public void warn(String msg, Throwable t) { log(WARNING, msg, t); } @Override public boolean isErrorEnabled() { return logger.isLoggable(SEVERE); } @Override public void error(String msg) { log(SEVERE, msg, null); } @Override public void error(String format, Object arg) { formatAndLog(SEVERE, format, arg); } @Override public void error(String format, Object arg1, Object arg2) { formatAndLog(SEVERE, format, arg1, arg2); } @Override public void error(String format, Object... argArray) { formatAndLog(SEVERE, format, argArray); } @Override public void error(String msg, Throwable t) { log(SEVERE, msg, t); } private void log(Level level, String msg, Throwable t) { if (logger.isLoggable(level)) { logger.log(level, msg, t); } } private void formatAndLog(Level level, String format, Object... argArray) { if (logger.isLoggable(level)) { FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray); logger.log(level, ft.getMessage(), ft.getThrowable()); } } }