package com.github.jknack.antlr4ide.console;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.IPreferencesService;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
public final class ConsoleImpl implements Console {
public static final String QUALIFIER = "com.github.jknack.antlr4ide";
public static final String KEY = "loglevel";
/** default log level for console and loggers.*/
public static final Level DEFAULT_LOGLEVEL = Level.INFO;
/** default log level for console and loggers as a java.lang.String.*/
public static final String DEFAULT_LOGLEVEL_AS_STRING = DEFAULT_LOGLEVEL.toString();
@Override
public void error(String message, Object...args) {
final Logger logger = getLogger();
final String msg = format(message, args);
logger.error(msg);
}
@Override
public void warning(String message, Object...args) {
final Logger logger = getLogger();
final String msg = format(message, args);
logger.warn(msg);
}
@Override
public void info(String message, Object...args) {
final Logger logger = getLogger();
final String msg = format(message, args);
logger.info(msg);
}
@Override
public void debug(String message, Object...args) {
final Logger logger = getLogger();
final String msg = format(message, args);
logger.debug(msg);
}
@Override
public void trace(String message, Object...args) {
final Logger logger = getLogger();
final String msg = format(message, args);
logger.trace(msg);
}
public static Logger getLogger() {
final Logger logger = LogManager.getRootLogger();
logger.setAdditivity(true);
// set log-level of logger
Level level = getLogLevel();
logger.setLevel(level);
return logger;
}
private String format(final String message, final Object...args) {
final String result = String.format(message, args);
return result;
}
public static Level getLogLevel() {
final IPreferencesService service = Platform.getPreferencesService();
final String string = service.getString(QUALIFIER, KEY,
DEFAULT_LOGLEVEL_AS_STRING, null);
final Level result = Level.toLevel(string);
return result;
}
}