diff --git a/README.md b/README.md
index 98d077d..7f1acdf 100644
--- a/README.md
+++ b/README.md
@@ -8,5 +8,6 @@ make a native logging service provider implementation of the [ELF4J](https://git
Java) SPI. See [elf4j-impl](https://github.com/elf4j/elf4j-impl) for descriptions.
While directly implementing the [ELF4J](https://github.com/elf4j/elf4j) API, this is also a stand-alone Java logging
-engine. It is designed to be adaptable to service other logging APIs, for example, as
-a [logging engine for SLF4J](https://github.com/elf4j/slf4j-elf4j).
\ No newline at end of file
+engine. It is designed to be adaptable to service other logging APIs, for example, as a logging engine
+for [SLF4J](https://github.com/elf4j/slf4j-elf4j) or Java Platform Logging
+API ([JPL](https://github.com/elf4j/jpl-elf4j)) (System.Logger).
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index ed575c6..eacff6b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
io.github.elf4j
elf4j-impl-core
- 0.6.4
+ 0.7.0
jar
elf4j-impl-core
Native logging service provider implementation of ELF4J (Easy Logging Facade For Java)
@@ -68,7 +68,7 @@
io.github.elf4j
elf4j
- 2.0.6
+ 2.1.0
com.google.code.gson
diff --git a/src/main/java/elf4j/impl/core/NativeLogger.java b/src/main/java/elf4j/impl/core/NativeLogger.java
index 48bab69..e59f389 100644
--- a/src/main/java/elf4j/impl/core/NativeLogger.java
+++ b/src/main/java/elf4j/impl/core/NativeLogger.java
@@ -37,20 +37,20 @@
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
-import java.util.stream.Collectors;
+
+import static java.util.stream.Collectors.toMap;
/**
* Instances of this class are thread-safe, and can be used as class, instance, or local variables. It is recommended,
- * however, to use class variables for instances that are returned by the static factory method
- * {@link Logger#instance()}, as those instances are more expensive to create. Other instances returned by the
- * fluent-style factory methods, such as {@link Logger#atError()}, are inexpensive to create and can be used (and
- * discarded) in-line or as convenient.
+ * however, to use class variables for instances returned by the static factory method {@link Logger#instance()}, as
+ * those instances are more expensive to create. Other instances returned by the fluent-style factory methods, such as
+ * {@link Logger#atLevel}, are inexpensive to create and can be used (and discarded) in-line or as convenient.
*/
@ThreadSafe
@Value
public class NativeLogger implements Logger {
private static final Map> NATIVE_LOGGERS =
- EnumSet.allOf(Level.class).stream().collect(Collectors.toMap(Function.identity(), l -> new HashMap<>()));
+ EnumSet.allOf(Level.class).stream().collect(toMap(Function.identity(), l -> new HashMap<>()));
/**
* Name of this logger's "owner class" - the logging service client class that first requested for this logger
@@ -82,33 +82,9 @@ public NativeLogger(@NonNull String ownerClassName, @NonNull Level level, @NonNu
}
@Override
- public NativeLogger atDebug() {
- return atLevel(Level.DEBUG);
- }
-
- @Override
- public NativeLogger atError() {
- return atLevel(Level.ERROR);
- }
-
- @Override
- public NativeLogger atInfo() {
- return atLevel(Level.INFO);
- }
-
- @Override
- public NativeLogger atTrace() {
- return atLevel(Level.TRACE);
- }
-
- @Override
- public NativeLogger atWarn() {
- return atLevel(Level.WARN);
- }
-
- @Override
- public @NonNull Level getLevel() {
- return this.level;
+ public NativeLogger atLevel(Level level) {
+ return this.level == level ? this : NATIVE_LOGGERS.get(level)
+ .computeIfAbsent(this.ownerClassName, k -> new NativeLogger(k, level, this.logService));
}
@Override
@@ -141,16 +117,6 @@ public void log(Throwable t, String message, Object... args) {
this.service(t, message, args);
}
- /**
- * @param level of the returned logger instance
- * @return logger instance of the same owner class name, with the specified level
- */
- public NativeLogger atLevel(Level level) {
- return this.level == level ? this : NATIVE_LOGGERS.get(level)
- .computeIfAbsent(this.ownerClassName,
- k -> new NativeLogger(this.ownerClassName, level, this.logService));
- }
-
private void service(Throwable exception, Object message, Object[] args) {
this.logService.log(this, NativeLogger.class, exception, message, args);
}
diff --git a/src/test/java/elf4j/impl/core/NativeLoggerTest.java b/src/test/java/elf4j/impl/core/NativeLoggerTest.java
index 0cec597..41ed046 100644
--- a/src/test/java/elf4j/impl/core/NativeLoggerTest.java
+++ b/src/test/java/elf4j/impl/core/NativeLoggerTest.java
@@ -57,8 +57,8 @@ void init() {
class atLevels {
@Test
void instanceForDifferentLevel() {
- NativeLogger info = nativeLogger.atInfo();
- NativeLogger warn = info.atWarn();
+ NativeLogger info = (NativeLogger) nativeLogger.atInfo();
+ NativeLogger warn = (NativeLogger) info.atWarn();
assertNotSame(warn, info);
assertEquals(info.getOwnerClassName(), warn.getOwnerClassName());
@@ -67,11 +67,11 @@ void instanceForDifferentLevel() {
@Test
void instanceForSameLevel() {
- NativeLogger trace = nativeLogger.atTrace();
- NativeLogger debug = nativeLogger.atDebug();
- NativeLogger info = nativeLogger.atInfo();
- NativeLogger warn = nativeLogger.atWarn();
- NativeLogger error = nativeLogger.atError();
+ NativeLogger trace = (NativeLogger) nativeLogger.atTrace();
+ NativeLogger debug = (NativeLogger) nativeLogger.atDebug();
+ NativeLogger info = (NativeLogger) nativeLogger.atInfo();
+ NativeLogger warn = (NativeLogger) nativeLogger.atWarn();
+ NativeLogger error = (NativeLogger) nativeLogger.atError();
assertSame(trace, trace.atTrace());
assertSame(debug, debug.atDebug());