20
20
import java .io .PrintStream ;
21
21
import org .apache .logging .log4j .Level ;
22
22
import org .apache .logging .log4j .message .MessageFactory ;
23
+ import org .apache .logging .log4j .message .ParameterizedMessageFactory ;
23
24
import org .apache .logging .log4j .simple .internal .SimpleProvider ;
24
- import org .apache .logging .log4j .spi .AbstractLogger ;
25
25
import org .apache .logging .log4j .spi .ExtendedLogger ;
26
26
import org .apache .logging .log4j .spi .LoggerContext ;
27
27
import org .apache .logging .log4j .spi .LoggerRegistry ;
28
28
import org .apache .logging .log4j .util .PropertiesUtil ;
29
+ import org .jspecify .annotations .Nullable ;
29
30
30
31
/**
31
32
* A simple {@link LoggerContext} implementation.
@@ -41,6 +42,8 @@ public class SimpleLoggerContext implements LoggerContext {
41
42
/** All system properties used by <code>SimpleLog</code> start with this */
42
43
protected static final String SYSTEM_PREFIX = "org.apache.logging.log4j.simplelog." ;
43
44
45
+ private static final MessageFactory DEFAULT_MESSAGE_FACTORY = ParameterizedMessageFactory .INSTANCE ;
46
+
44
47
private final PropertiesUtil props ;
45
48
46
49
/** Include the instance name in the log message? */
@@ -96,14 +99,20 @@ public ExtendedLogger getLogger(final String name) {
96
99
}
97
100
98
101
@ Override
99
- public ExtendedLogger getLogger (final String name , final MessageFactory messageFactory ) {
100
- // Note: This is the only method where we add entries to the 'loggerRegistry' ivar.
101
- final ExtendedLogger extendedLogger = loggerRegistry . getLogger ( name , messageFactory ) ;
102
- if ( extendedLogger != null ) {
103
- AbstractLogger . checkMessageFactory ( extendedLogger , messageFactory );
104
- return extendedLogger ;
102
+ public ExtendedLogger getLogger (final String name , @ Nullable final MessageFactory messageFactory ) {
103
+ final MessageFactory effectiveMessageFactory =
104
+ messageFactory != null ? messageFactory : DEFAULT_MESSAGE_FACTORY ;
105
+ final ExtendedLogger oldLogger = loggerRegistry . getLogger ( name , effectiveMessageFactory );
106
+ if ( oldLogger != null ) {
107
+ return oldLogger ;
105
108
}
106
- final SimpleLogger simpleLogger = new SimpleLogger (
109
+ final ExtendedLogger newLogger = createLogger (name , effectiveMessageFactory );
110
+ loggerRegistry .putIfAbsent (name , effectiveMessageFactory , newLogger );
111
+ return loggerRegistry .getLogger (name , effectiveMessageFactory );
112
+ }
113
+
114
+ private ExtendedLogger createLogger (final String name , @ Nullable final MessageFactory messageFactory ) {
115
+ return new SimpleLogger (
107
116
name ,
108
117
defaultLevel ,
109
118
showLogName ,
@@ -114,8 +123,6 @@ public ExtendedLogger getLogger(final String name, final MessageFactory messageF
114
123
messageFactory ,
115
124
props ,
116
125
stream );
117
- loggerRegistry .putIfAbsent (name , messageFactory , simpleLogger );
118
- return loggerRegistry .getLogger (name , messageFactory );
119
126
}
120
127
121
128
/**
@@ -131,16 +138,18 @@ public LoggerRegistry<ExtendedLogger> getLoggerRegistry() {
131
138
132
139
@ Override
133
140
public boolean hasLogger (final String name ) {
134
- return false ;
141
+ return loggerRegistry . hasLogger ( name , DEFAULT_MESSAGE_FACTORY ) ;
135
142
}
136
143
137
144
@ Override
138
145
public boolean hasLogger (final String name , final Class <? extends MessageFactory > messageFactoryClass ) {
139
- return false ;
146
+ return loggerRegistry . hasLogger ( name , messageFactoryClass ) ;
140
147
}
141
148
142
149
@ Override
143
- public boolean hasLogger (final String name , final MessageFactory messageFactory ) {
144
- return false ;
150
+ public boolean hasLogger (final String name , @ Nullable final MessageFactory messageFactory ) {
151
+ final MessageFactory effectiveMessageFactory =
152
+ messageFactory != null ? messageFactory : DEFAULT_MESSAGE_FACTORY ;
153
+ return loggerRegistry .hasLogger (name , effectiveMessageFactory );
145
154
}
146
155
}
0 commit comments