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);
}
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;
+ SystemLogger logger;
+ try {
+ logger = new RealSystemLogger(name);
+ } catch (NoSuchMethodError | NoClassDefFoundError e) {// Android
+ logger = new FallBackSystemLogger();
}
-
- @Override
- public Logger getLogger() {
- return logger;
- }
-
+ return new LoggerWrapper(logger);
}
}