Skip to content

Commit aa067ca

Browse files
committed
Fixed Logger handling....
1 parent d1c0e3f commit aa067ca

3 files changed

Lines changed: 22 additions & 9 deletions

File tree

src/main/java/org/mangorage/bootstrap/api/logging/AbstractLoggerProvider.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@ public String getName() {
2020

2121
@Override
2222
public IMangoLogger getLogger(String name) {
23-
if (!loggerCache.containsKey(name)) {
24-
loggerCache.put(name, createLogger(name));
23+
synchronized (this.name) {
24+
if (!loggerCache.containsKey(name)) {
25+
final var logger = createLogger(name);
26+
loggerCache.put(name, createLogger(name));
27+
return logger;
28+
}
2529
}
2630
return loggerCache.get(name);
2731
}

src/main/java/org/mangorage/bootstrap/api/logging/ILoggerFactory.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,11 @@ static ILoggerFactory getDefault() {
2424
* Gets the wrapped logger provider by its name. This is used to get the underlying logger provider
2525
* Sometimes providers come in later then originally requested, so this method can be used to use the provider after it has been loaded.
2626
*/
27-
default IDeferredMangoLogger getWrappedProvider(String providerName, Class<?> clazz) {
28-
return new DeferredMangoLogger(providerName, provider -> provider.getLogger(clazz));
29-
}
27+
IDeferredMangoLogger getWrappedProvider(String providerName, Class<?> clazz);
3028

3129
/**
3230
* Gets the wrapped logger provider by its name. This is used to get the underlying logger provider
3331
* Sometimes providers come in later then originally requested, so this method can be used to use the provider after it has been loaded.
3432
*/
35-
default IDeferredMangoLogger getWrappedProvider(String providerName, String name) {
36-
return new DeferredMangoLogger(providerName, provider -> provider.getLogger(name));
37-
}
33+
IDeferredMangoLogger getWrappedProvider(String providerName, String name);
3834
}

src/main/java/org/mangorage/bootstrap/internal/logger/DefaultLoggerFactory.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.mangorage.bootstrap.internal.logger;
22

3+
import org.mangorage.bootstrap.api.logging.IDeferredMangoLogger;
34
import org.mangorage.bootstrap.api.logging.ILoggerFactory;
45
import org.mangorage.bootstrap.api.logging.ILoggerProvider;
56
import java.util.Map;
@@ -26,11 +27,23 @@ public static void load(ModuleLayer moduleLayer) {
2627

2728
@Override
2829
public ILoggerProvider getProvider(String providerName) {
29-
return providers.getOrDefault(providerName, DefaultLoggerProvider.INSTANCE);
30+
synchronized (INSTANCE) {
31+
return providers.getOrDefault(providerName, DefaultLoggerProvider.INSTANCE);
32+
}
3033
}
3134

3235
@Override
3336
public boolean hasProvider(String providerName) {
3437
return providers.containsKey(providerName);
3538
}
39+
40+
@Override
41+
public IDeferredMangoLogger getWrappedProvider(String providerName, Class<?> clazz) {
42+
return new DeferredMangoLogger(providerName, provider -> provider.getLogger(clazz));
43+
}
44+
45+
@Override
46+
public IDeferredMangoLogger getWrappedProvider(String providerName, String name) {
47+
return new DeferredMangoLogger(providerName, provider -> provider.getLogger(name));
48+
}
3649
}

0 commit comments

Comments
 (0)