Skip to content

Commit 4589afb

Browse files
committed
Skip redundant LoggerContext reset
1 parent dd2ed5f commit 4589afb

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackConfigurator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
* @author Dave Syer
7777
* @author Andy Wilkinson
7878
* @author Ben Hale
79+
* @author Mark Chesney
7980
* @since 1.0.0
8081
*/
8182
public class LogbackLoggingSystem extends AbstractLoggingSystem implements BeanFactoryInitializationAotProcessor {
@@ -210,7 +211,7 @@ private boolean initializeFromAotGeneratedArtifactsIfPossible(LoggingInitializat
210211
applySystemProperties(initializationContext.getEnvironment(), logFile);
211212
}
212213
LoggerContext loggerContext = getLoggerContext();
213-
stopAndReset(loggerContext);
214+
stopOrReset(loggerContext);
214215
SpringBootJoranConfigurator configurator = new SpringBootJoranConfigurator(initializationContext);
215216
configurator.setContext(loggerContext);
216217
boolean configuredUsingAotGeneratedArtifacts = configurator.configureUsingAotGeneratedArtifacts();
@@ -223,7 +224,7 @@ private boolean initializeFromAotGeneratedArtifactsIfPossible(LoggingInitializat
223224
@Override
224225
protected void loadDefaults(LoggingInitializationContext initializationContext, LogFile logFile) {
225226
LoggerContext context = getLoggerContext();
226-
stopAndReset(context);
227+
stopOrReset(context);
227228
withLoggingSuppressed(() -> {
228229
boolean debug = Boolean.getBoolean("logback.debug");
229230
if (debug) {
@@ -245,7 +246,7 @@ protected void loadDefaults(LoggingInitializationContext initializationContext,
245246
protected void loadConfiguration(LoggingInitializationContext initializationContext, String location,
246247
LogFile logFile) {
247248
LoggerContext loggerContext = getLoggerContext();
248-
stopAndReset(loggerContext);
249+
stopOrReset(loggerContext);
249250
withLoggingSuppressed(() -> {
250251
if (initializationContext != null) {
251252
applySystemProperties(initializationContext.getEnvironment(), logFile);
@@ -298,9 +299,13 @@ private void configureByResourceUrl(LoggingInitializationContext initializationC
298299
}
299300
}
300301

301-
private void stopAndReset(LoggerContext loggerContext) {
302-
loggerContext.stop();
303-
loggerContext.reset();
302+
private void stopOrReset(LoggerContext loggerContext) {
303+
if (loggerContext.isStarted()) {
304+
loggerContext.stop();
305+
}
306+
else {
307+
loggerContext.reset();
308+
}
304309
if (isBridgeHandlerInstalled()) {
305310
addLevelChangePropagator(loggerContext);
306311
}

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.junit.jupiter.api.BeforeEach;
4545
import org.junit.jupiter.api.Test;
4646
import org.junit.jupiter.api.extension.ExtendWith;
47+
import org.mockito.junit.jupiter.MockitoExtension;
4748
import org.slf4j.ILoggerFactory;
4849
import org.slf4j.LoggerFactory;
4950
import org.slf4j.MDC;
@@ -93,8 +94,9 @@
9394
* @author Scott Frederick
9495
* @author Jonatan Ivanov
9596
* @author Moritz Halbritter
97+
* @author Mark Chesney
9698
*/
97-
@ExtendWith(OutputCaptureExtension.class)
99+
@ExtendWith({ MockitoExtension.class, OutputCaptureExtension.class })
98100
@ClassPathExclusions({ "log4j-core-*.jar", "log4j-api-*.jar" })
99101
class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
100102

0 commit comments

Comments
 (0)