25
25
import ch .qos .logback .core .read .ListAppender ;
26
26
import ch .qos .logback .core .util .StatusPrinter ;
27
27
import com .hivemq .extension .sdk .api .annotations .NotNull ;
28
- import com .hivemq .logging .NettyLogLevelModifier ;
29
- import com .hivemq .logging .XodusEnvironmentImplLogLevelModificator ;
30
- import com .hivemq .logging .XodusFileDataWriterLogLevelModificator ;
28
+ import com .hivemq .logging .LogLevelModifierTurboFilter ;
29
+ import com .hivemq .logging .modifier .NettyLogLevelModifier ;
30
+ import com .hivemq .logging .modifier .XodusEnvironmentImplLogLevelModifier ;
31
+ import com .hivemq .logging .modifier .XodusFileDataWriterLogLevelModifier ;
31
32
import org .apache .commons .lang3 .SystemUtils ;
32
33
import org .slf4j .Logger ;
33
34
import org .slf4j .LoggerFactory ;
42
43
* This class is responsible for all logging bootstrapping. This is only
43
44
* needed at the very beginning of HiveMQs lifecycle and before bootstrapping other
44
45
* resources
45
- *
46
- * @author Dominik Obermaier
47
46
*/
48
47
public class LoggingBootstrap {
49
48
50
- private static @ NotNull ListAppender <ILoggingEvent > listAppender = new ListAppender <>();
51
-
52
49
private static final Logger log = LoggerFactory .getLogger (LoggingBootstrap .class );
53
50
54
- private static final XodusFileDataWriterLogLevelModificator xodusFileDataWriterLogLevelModificator =
55
- new XodusFileDataWriterLogLevelModificator ();
56
- private static final NettyLogLevelModifier nettyLogLevelModifier = new NettyLogLevelModifier ();
57
- private static final XodusEnvironmentImplLogLevelModificator xodusEnvironmentImplLogLevelModificator =
58
- new XodusEnvironmentImplLogLevelModificator ();
59
-
51
+ private static @ NotNull ListAppender <ILoggingEvent > listAppender = new ListAppender <>();
60
52
private static final List <Appender <ILoggingEvent >> defaultAppenders = new LinkedList <>();
53
+ private static final @ NotNull LogLevelModifierTurboFilter logLevelModifierTurboFilter =
54
+ new LogLevelModifierTurboFilter ();
61
55
62
56
/**
63
57
* Prepares the logging. This method must be called before any logging occurs
@@ -90,9 +84,8 @@ public static void prepareLogging() {
90
84
public static void initLogging (final @ NotNull File configFolder ) {
91
85
92
86
final LoggerContext context = (LoggerContext ) LoggerFactory .getILoggerFactory ();
93
- final ch .qos .logback .classic .Logger logger = getRootLogger ();
94
87
95
- context .addListener (new LogbackChangeListener (logger ));
88
+ context .addListener (new LogbackChangeListener ());
96
89
97
90
final boolean overridden = overrideLogbackXml (configFolder );
98
91
@@ -104,13 +97,15 @@ public static void initLogging(final @NotNull File configFolder) {
104
97
105
98
reset ();
106
99
100
+ context .addTurboFilter (logLevelModifierTurboFilter );
101
+
107
102
// must be added here, as addLoglevelModifiers() is much to late
108
103
if (SystemUtils .IS_OS_WINDOWS ) {
109
- context . addTurboFilter ( xodusFileDataWriterLogLevelModificator );
104
+ logLevelModifierTurboFilter . registerLogLevelModifier ( new XodusFileDataWriterLogLevelModifier () );
110
105
log .trace ("Added Xodus log level modifier for FileDataWriter.class" );
111
106
}
112
107
113
- context . addTurboFilter ( nettyLogLevelModifier );
108
+ logLevelModifierTurboFilter . registerLogLevelModifier ( new NettyLogLevelModifier () );
114
109
log .trace ("Added Netty log level modifier" );
115
110
}
116
111
@@ -194,9 +189,7 @@ private static boolean overrideLogbackXml(final @NotNull File configFolder) {
194
189
}
195
190
196
191
public static void addLoglevelModifiers () {
197
- final LoggerContext context = (LoggerContext ) LoggerFactory .getILoggerFactory ();
198
-
199
- context .addTurboFilter (xodusEnvironmentImplLogLevelModificator );
192
+ logLevelModifierTurboFilter .registerLogLevelModifier (new XodusEnvironmentImplLogLevelModifier ());
200
193
log .trace ("Added Xodus log level modifier for EnvironmentImpl.class" );
201
194
}
202
195
@@ -208,14 +201,7 @@ private static void reset() {
208
201
listAppender .list .clear ();
209
202
}
210
203
211
- private static class LogbackChangeListener implements LoggerContextListener {
212
-
213
- private final @ NotNull ch .qos .logback .classic .Logger logger ;
214
-
215
- private LogbackChangeListener (
216
- final @ NotNull ch .qos .logback .classic .Logger logger ) {
217
- this .logger = logger ;
218
- }
204
+ private static final class LogbackChangeListener implements LoggerContextListener {
219
205
220
206
@ Override
221
207
public boolean isResetResistant () {
@@ -237,7 +223,7 @@ public void onStart(final @NotNull LoggerContext context) {
237
223
@ Override
238
224
public void onReset (final @ NotNull LoggerContext context ) {
239
225
log .trace ("logback.xml was changed" );
240
- addTurboFilters ( context );
226
+ context . addTurboFilter ( logLevelModifierTurboFilter );
241
227
}
242
228
243
229
@ Override
@@ -249,12 +235,5 @@ public void onStop(final @NotNull LoggerContext context) {
249
235
public void onLevelChange (final @ NotNull ch .qos .logback .classic .Logger logger , final @ NotNull Level level ) {
250
236
//noop
251
237
}
252
-
253
- private void addTurboFilters (final @ NotNull LoggerContext context ) {
254
-
255
- context .addTurboFilter (xodusFileDataWriterLogLevelModificator );
256
- context .addTurboFilter (nettyLogLevelModifier );
257
- context .addTurboFilter (xodusEnvironmentImplLogLevelModificator );
258
- }
259
238
}
260
239
}
0 commit comments