Skip to content

Commit 4c41cc8

Browse files
committed
fix(log): restore logger context after test to prevent pollution
- Add StatusPrinter for error details in load() - Restore default logger config in TronErrorTest
1 parent a4fbb0c commit 4c41cc8

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-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: 20 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;
@@ -37,6 +40,7 @@
3740
import org.tron.core.services.http.GetBlockServlet;
3841
import org.tron.core.services.http.RateLimiterServlet;
3942
import org.tron.core.zen.ZksnarkInitService;
43+
import org.slf4j.LoggerFactory;
4044

4145
@RunWith(MockitoJUnitRunner.class)
4246
public class TronErrorTest {
@@ -85,10 +89,22 @@ public void ZksnarkInitTest() throws IllegalAccessException, NoSuchFieldExceptio
8589

8690
@Test
8791
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());
92+
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
93+
94+
try {
95+
LogService.load("non-existent.xml");
96+
Path path = temporaryFolder.newFile("logback.xml").toPath();
97+
TronError thrown = assertThrows(TronError.class, () -> LogService.load(path.toString()));
98+
assertEquals(TronError.ErrCode.LOG_LOAD, thrown.getErrCode());
99+
} finally {
100+
try {
101+
context.reset();
102+
ContextInitializer ci = new ContextInitializer(context);
103+
ci.autoConfig();
104+
} catch (JoranException e) {
105+
Assert.fail(e.getMessage());
106+
}
107+
}
92108
}
93109

94110
@Test

0 commit comments

Comments
 (0)