Import proof of concept

This commit is contained in:
Nicolai Parlog 2020-03-10 19:57:43 +01:00 committed by Ceki Gulcu
parent 8c2ee1378e
commit 1d4daa1c53
5 changed files with 129 additions and 1 deletions

View File

@ -66,6 +66,7 @@
<module>slf4j-simple</module>
<module>slf4j-nop</module>
<module>slf4j-jdk14</module>
<module>slf4j-jdk-platform-logging</module>
<module>slf4j-log4j12</module>
<module>slf4j-ext</module>
<module>jcl-over-slf4j</module>
@ -74,7 +75,7 @@
<module>osgi-over-slf4j</module>
<module>integration</module>
<module>slf4j-site</module>
<module>slf4j-migrator</module>
<module>slf4j-migrator</module>
</modules>
<dependencies>

View File

@ -25,4 +25,16 @@
</dependency>
</dependencies>
<build>
<plugins>
<!-- target Java 9+ -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,5 @@
module org.slf4j.jdk {
requires org.slf4j;
provides java.lang.System.LoggerFinder
with org.slf4j.jdk.SLF4JSystemLoggerFinder;
}

View File

@ -0,0 +1,95 @@
package org.slf4j.jdk;
import org.slf4j.Logger;
import java.text.MessageFormat;
import java.util.ResourceBundle;
import static java.util.Objects.requireNonNull;
class SLF4JSystemLogger implements System.Logger {
private final Logger logger;
public SLF4JSystemLogger(Logger logger) {
this.logger = requireNonNull(logger);
}
@Override
public String getName() {
return logger.getName();
}
@Override
public boolean isLoggable(Level level) {
switch(level) {
case ALL:
throw new UnsupportedOperationException();
case TRACE:
return logger.isTraceEnabled();
case DEBUG:
return logger.isDebugEnabled();
case INFO:
return logger.isInfoEnabled();
case WARNING:
return logger.isWarnEnabled();
case ERROR:
return logger.isErrorEnabled();
case OFF:
throw new UnsupportedOperationException();
}
// TODO
return true;
}
@Override
public void log(Level level, ResourceBundle bundle, String msg, Throwable thrown) {
switch(level) {
case ALL:
throw new UnsupportedOperationException();
case TRACE:
logger.trace(msg, thrown);
break;
case DEBUG:
logger.debug(msg, thrown);
break;
case INFO:
logger.info(msg, thrown);
break;
case WARNING:
logger.warn(msg, thrown);
break;
case ERROR:
logger.error(msg, thrown);
break;
case OFF:
throw new UnsupportedOperationException();
}
}
@Override
public void log(Level level, ResourceBundle bundle, String format, Object... params) {
switch(level) {
case ALL:
throw new UnsupportedOperationException();
case TRACE:
logger.trace(MessageFormat.format(format, params));
break;
case DEBUG:
logger.debug(MessageFormat.format(format, params));
break;
case INFO:
logger.info(MessageFormat.format(format, params));
break;
case WARNING:
logger.warn(MessageFormat.format(format, params));
break;
case ERROR:
logger.error(MessageFormat.format(format, params));
break;
case OFF:
throw new UnsupportedOperationException();
}
}
}

View File

@ -0,0 +1,15 @@
package org.slf4j.jdk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SLF4JSystemLoggerFinder extends System.LoggerFinder {
@Override
public System.Logger getLogger(String name, Module module) {
// TODO do we need to use the `module`?
Logger slf4JLogger = LoggerFactory.getLogger(name);
return new SLF4JSystemLogger(slf4JLogger);
}
}