org.jgroups.logging.Slf4jLogImpl Maven / Gradle / Ivy
package org.jgroups.logging;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import java.util.function.Function;
/**
* Logger that delivers messages to a SLF4J logger
*
* @author Konstantin Gusarov
* @since 4.0.0
*/
public class Slf4jLogImpl implements Log {
private static final Map, String> LEVELS = new LinkedHashMap<>();
private static final Locale LOCALE = new Locale(System.getProperty("user.language"),
System.getProperty("user.country"));
static {
LEVELS.put(Logger::isErrorEnabled, "ERROR");
LEVELS.put(Logger::isWarnEnabled, "WARN");
LEVELS.put(Logger::isInfoEnabled, "INFO");
LEVELS.put(Logger::isDebugEnabled, "DEBUG");
LEVELS.put(Logger::isTraceEnabled, "TRACE");
}
private final Logger logger;
private final Locale locale;
public Slf4jLogImpl(final Class> clazz) {
this(LOCALE, LoggerFactory.getLogger(clazz));
}
public Slf4jLogImpl(final String category) {
this(LOCALE, LoggerFactory.getLogger(category));
}
public Slf4jLogImpl(final Locale locale, final Logger logger) {
this.logger = logger;
this.locale = locale;
}
@Override
public boolean isFatalEnabled() {
return logger.isErrorEnabled();
}
@Override
public boolean isErrorEnabled() {
return logger.isErrorEnabled();
}
@Override
public boolean isWarnEnabled() {
return logger.isWarnEnabled();
}
@Override
public boolean isInfoEnabled() {
return logger.isInfoEnabled();
}
@Override
public boolean isDebugEnabled() {
return logger.isDebugEnabled();
}
@Override
public boolean isTraceEnabled() {
return logger.isTraceEnabled();
}
@Override
public void fatal(final String msg) {
logger.error(msg);
}
@Override
public void fatal(final String msg, final Object... args) {
final String formatted = String.format(locale, msg, args);
logger.error(formatted);
}
@Override
public void fatal(final String msg, final Throwable throwable) {
logger.error(msg, throwable);
}
@Override
public void error(final String msg) {
logger.error(msg);
}
@Override
public void error(final String format, final Object... args) {
final String formatted = String.format(locale, format, args);
logger.error(formatted);
}
@Override
public void error(final String msg, final Throwable throwable) {
logger.error(msg, throwable);
}
@Override
public void warn(final String msg) {
logger.warn(msg);
}
@Override
public void warn(final String msg, final Object... args) {
final String formatted = String.format(locale, msg, args);
logger.warn(formatted);
}
@Override
public void warn(final String msg, final Throwable throwable) {
logger.warn(msg, throwable);
}
@Override
public void info(final String msg) {
logger.info(msg);
}
@Override
public void info(final String msg, final Object... args) {
final String formatted = String.format(locale, msg, args);
logger.info(formatted);
}
@Override
public void debug(final String msg) {
logger.debug(msg);
}
@Override
public void debug(final String msg, final Object... args) {
final String formatted = String.format(locale, msg, args);
logger.info(formatted);
}
@Override
public void debug(final String msg, final Throwable throwable) {
logger.debug(msg, throwable);
}
@Override
public void trace(final Object msg) {
logger.trace("{}", msg);
}
@Override
public void trace(final String msg) {
logger.trace(msg);
}
@Override
public void trace(final String msg, final Object... args) {
final String formatted = String.format(locale, msg, args);
logger.info(formatted);
}
@Override
public void trace(final String msg, final Throwable throwable) {
logger.trace(msg, throwable);
}
@Override
public void setLevel(final String level) {
throw new UnsupportedOperationException();
}
@Override
public String getLevel() {
String result = "NONE";
for (final Map.Entry, String> entry : LEVELS.entrySet()) {
if (entry.getKey().apply(logger)) {
result = entry.getValue();
} else {
break;
}
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy