1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.slf4j;
20
21 import java.util.concurrent.ConcurrentHashMap;
22 import java.util.concurrent.ConcurrentMap;
23
24 import org.slf4j.ILoggerFactory;
25 import org.slf4j.Logger;
26
27
28
29
30 public class MavenLoggerFactory implements org.apache.maven.logging.api.LogLevelRecorder, ILoggerFactory {
31 DefaultLogLevelRecorder logLevelRecorder = null;
32 final ConcurrentMap<String, Logger> loggerMap = new ConcurrentHashMap<>();
33
34 public MavenLoggerFactory() {
35 MavenSimpleLogger.lazyInit();
36 }
37
38 @Override
39 public boolean hasReachedMaxLevel() {
40 return logLevelRecorder != null && logLevelRecorder.metThreshold();
41 }
42
43 @Override
44 public Level getMaxLevelReached() {
45 return null;
46 }
47
48 @Override
49 public Level getMaxLevelAllowed() {
50 return null;
51 }
52
53 @Override
54 public void setMaxLevelAllowed(Level level) {
55 this.logLevelRecorder = new DefaultLogLevelRecorder(level.name());
56 }
57
58
59
60 @Override
61 public Logger getLogger(String name) {
62 return loggerMap.computeIfAbsent(name, this::getNewLoggingInstance);
63 }
64
65 protected Logger getNewLoggingInstance(String name) {
66 if (logLevelRecorder == null) {
67 return new MavenSimpleLogger(name);
68 } else {
69 return new MavenFailOnSeverityLogger(name, logLevelRecorder);
70 }
71 }
72
73 public void reconfigure() {
74 SimpleLoggerConfiguration config = MavenSimpleLogger.CONFIG_PARAMS;
75 config.init();
76 loggerMap.values().forEach(l -> {
77 if (l instanceof MavenSimpleLogger msl) {
78 msl.configure(config.defaultLogLevel);
79 }
80 });
81 }
82 }