+/**
+ * Uses {@link System.Logger}, should be used on proper implementations of the
+ * Java platform.
+ */
+class SystemCmsLog implements CmsLog {
+ private final Logger logger;
+
+ SystemCmsLog(String name) {
+ logger = System.getLogger(name);
+ }
+
+ @Override
+ public boolean isLoggable(Level level) {
+ return logger.isLoggable(convertSystemLevel(level));
+ }
+
+ @Override
+ public void log(Level level, Supplier<String> msgSupplier, Throwable thrown) {
+ logger.log(convertSystemLevel(level), msgSupplier, thrown);
+ }
+
+ @Override
+ public void log(Level level, String msg, Throwable thrown) {
+ logger.log(convertSystemLevel(level), msg, thrown);
+ }
+
+ java.lang.System.Logger.Level convertSystemLevel(Level level) {
+ switch (level.severity) {
+ case Integer.MIN_VALUE:
+ return java.lang.System.Logger.Level.ALL;
+ case 400:
+ return java.lang.System.Logger.Level.TRACE;
+ case 500:
+ return java.lang.System.Logger.Level.DEBUG;
+ case 800:
+ return java.lang.System.Logger.Level.INFO;
+ case 900:
+ return java.lang.System.Logger.Level.WARNING;
+ case 1000:
+ return java.lang.System.Logger.Level.ERROR;
+ case Integer.MAX_VALUE:
+ return java.lang.System.Logger.Level.OFF;
+ default:
+ throw new IllegalArgumentException("Unexpected value: " + level.severity);