58 lines
2.0 KiB
Java
58 lines
2.0 KiB
Java
package io.gitlab.jfronny.commons.logger;
|
|
|
|
import io.gitlab.jfronny.commons.StringFormatter;
|
|
|
|
import java.text.MessageFormat;
|
|
import java.util.MissingResourceException;
|
|
import java.util.ResourceBundle;
|
|
|
|
public interface CompactLogger extends SystemLoggerPlus {
|
|
Level getLevel();
|
|
void log(Level level, String message);
|
|
default void log(Level level, String message, Throwable throwable) {
|
|
if (!isLoggable(level)) return;
|
|
log(level, message + System.lineSeparator() + StringFormatter.toString(throwable));
|
|
}
|
|
|
|
@Override
|
|
default boolean isLoggable(Level level) {
|
|
if (level == Level.ALL) return true;
|
|
if (level == Level.OFF) return false;
|
|
return level.getSeverity() >= getLevel().getSeverity();
|
|
}
|
|
|
|
@Override
|
|
default void log(Level level, ResourceBundle resourceBundle, String s, Throwable throwable) {
|
|
if (!isLoggable(level)) return;
|
|
s = getResourceStringOrMessage(resourceBundle, s);
|
|
log(level, s, throwable);
|
|
}
|
|
|
|
@Override
|
|
default void log(Level level, ResourceBundle resourceBundle, String s, Object... objects) {
|
|
if (!isLoggable(level)) return;
|
|
s = getResourceStringOrMessage(resourceBundle, s);
|
|
if (objects != null && objects.length > 0) {
|
|
String[] strings = new String[objects.length];
|
|
for (int i = 0; i < objects.length; i++) {
|
|
strings[i] = StringFormatter.toString(objects[i]);
|
|
}
|
|
log(level, new MessageFormat(s).format(strings));
|
|
} else {
|
|
log(level, s);
|
|
}
|
|
}
|
|
|
|
private static String getResourceStringOrMessage(ResourceBundle bundle, String msg) {
|
|
// This method was taken from SLF4J and modified slightly
|
|
if (bundle == null || msg == null) return msg;
|
|
try {
|
|
return bundle.getString(msg);
|
|
} catch (MissingResourceException ex) {
|
|
return msg;
|
|
} catch (ClassCastException ex) {
|
|
return bundle.getObject(msg).toString();
|
|
}
|
|
}
|
|
}
|