package org.argeo.api.cms;
import java.lang.System.Logger;
-import java.lang.System.Logger.Level;
import java.util.Objects;
+import java.util.function.Supplier;
+
+import org.argeo.api.cms.SystemLogger.Level;
/**
* A Commons Logging / SLF4J style logging utilities wrapping a standard Java
* platform {@link Logger}.
*/
public interface CmsLog {
- Logger getLogger();
+ SystemLogger getLogger();
default boolean isDebugEnabled() {
return getLogger().isLoggable(Level.DEBUG);
getLogger().log(Level.TRACE, message);
}
+ default void trace(Supplier<String> message) {
+ getLogger().log(Level.TRACE, message);
+ }
+
default void trace(Object message) {
getLogger().log(Level.TRACE, Objects.requireNonNull(message));
}
getLogger().log(Level.DEBUG, message);
}
+ default void debug(Supplier<String> message) {
+ getLogger().log(Level.DEBUG, message);
+ }
+
default void debug(Object message) {
getLogger().log(Level.DEBUG, message);
}
getLogger().log(Level.INFO, message);
}
+ default void info(Supplier<String> message) {
+ getLogger().log(Level.INFO, message);
+ }
+
default void info(Object message) {
getLogger().log(Level.INFO, message);
}
getLogger().log(Level.WARNING, message);
}
+ default void warn(Supplier<String> message) {
+ getLogger().log(Level.WARNING, message);
+ }
+
default void warn(Object message) {
getLogger().log(Level.WARNING, message);
}
getLogger().log(Level.ERROR, message);
}
+ default void error(Supplier<String> message) {
+ getLogger().log(Level.ERROR, message);
+ }
+
default void error(Object message) {
getLogger().log(Level.ERROR, message);
}
}
static CmsLog getLog(String name) {
- Logger logger = System.getLogger(Objects.requireNonNull(name));
- return new LoggerWrapper(logger);
- }
-
- /** A trivial implementation wrapping a platform logger. */
- static class LoggerWrapper implements CmsLog {
- private final Logger logger;
-
- LoggerWrapper(Logger logger) {
- this.logger = logger;
- }
-
- @Override
- public Logger getLogger() {
- return logger;
+ SystemLogger logger;
+ try {
+ logger = new RealSystemLogger(name);
+ } catch (NoSuchMethodError | NoClassDefFoundError e) {// Android
+ logger = new FallBackSystemLogger();
}
-
+ return new LoggerWrapper(logger);
}
}