Skip to content

Commit 30f6fee

Browse files
authored
fix(log): restore logger context after test to prevent pollution (#6476)
- Add StatusPrinter for error details in load() - Restore default logger config in TronErrorTest
1 parent a4fbb0c commit 30f6fee

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

common/src/main/java/org/tron/common/log/LogService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,28 @@
22

33
import ch.qos.logback.classic.LoggerContext;
44
import ch.qos.logback.classic.joran.JoranConfigurator;
5+
import ch.qos.logback.core.util.StatusPrinter;
56
import java.io.File;
67
import org.slf4j.LoggerFactory;
78
import org.tron.core.exception.TronError;
89

910
public class LogService {
1011

1112
public static void load(String path) {
13+
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
1214
try {
1315
File file = new File(path);
1416
if (!file.exists() || !file.isFile() || !file.canRead()) {
1517
return;
1618
}
17-
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
1819
JoranConfigurator configurator = new JoranConfigurator();
1920
configurator.setContext(lc);
2021
lc.reset();
2122
configurator.doConfigure(file);
2223
} catch (Exception e) {
2324
throw new TronError(e, TronError.ErrCode.LOG_LOAD);
25+
} finally {
26+
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
2427
}
2528
}
2629
}

framework/src/test/java/org/tron/core/exception/TronErrorTest.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import static org.mockito.Mockito.never;
99
import static org.mockito.Mockito.times;
1010

11+
import ch.qos.logback.classic.LoggerContext;
12+
import ch.qos.logback.classic.util.ContextInitializer;
13+
import ch.qos.logback.core.joran.spi.JoranException;
1114
import com.typesafe.config.Config;
1215
import com.typesafe.config.ConfigFactory;
1316
import com.typesafe.config.ConfigObject;
@@ -27,6 +30,7 @@
2730
import org.mockito.MockedStatic;
2831
import org.mockito.Mockito;
2932
import org.mockito.junit.MockitoJUnitRunner;
33+
import org.slf4j.LoggerFactory;
3034
import org.tron.common.arch.Arch;
3135
import org.tron.common.log.LogService;
3236
import org.tron.common.parameter.RateLimiterInitialization;
@@ -38,6 +42,7 @@
3842
import org.tron.core.services.http.RateLimiterServlet;
3943
import org.tron.core.zen.ZksnarkInitService;
4044

45+
4146
@RunWith(MockitoJUnitRunner.class)
4247
public class TronErrorTest {
4348

@@ -85,10 +90,22 @@ public void ZksnarkInitTest() throws IllegalAccessException, NoSuchFieldExceptio
8590

8691
@Test
8792
public void LogLoadTest() throws IOException {
88-
LogService.load("non-existent.xml");
89-
Path path = temporaryFolder.newFile("logback.xml").toPath();
90-
TronError thrown = assertThrows(TronError.class, () -> LogService.load(path.toString()));
91-
assertEquals(TronError.ErrCode.LOG_LOAD, thrown.getErrCode());
93+
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
94+
95+
try {
96+
LogService.load("non-existent.xml");
97+
Path path = temporaryFolder.newFile("logback.xml").toPath();
98+
TronError thrown = assertThrows(TronError.class, () -> LogService.load(path.toString()));
99+
assertEquals(TronError.ErrCode.LOG_LOAD, thrown.getErrCode());
100+
} finally {
101+
try {
102+
context.reset();
103+
ContextInitializer ci = new ContextInitializer(context);
104+
ci.autoConfig();
105+
} catch (JoranException e) {
106+
Assert.fail(e.getMessage());
107+
}
108+
}
92109
}
93110

94111
@Test

0 commit comments

Comments
 (0)