Skip to content

Commit 84c27e1

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 84c27e1

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,27 @@
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+
File file = new File(path);
14+
if (!file.exists() || !file.isFile() || !file.canRead()) {
15+
return;
16+
}
17+
18+
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
1219
try {
13-
File file = new File(path);
14-
if (!file.exists() || !file.isFile() || !file.canRead()) {
15-
return;
16-
}
17-
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
1820
JoranConfigurator configurator = new JoranConfigurator();
1921
configurator.setContext(lc);
2022
lc.reset();
2123
configurator.doConfigure(file);
2224
} catch (Exception e) {
25+
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
2326
throw new TronError(e, TronError.ErrCode.LOG_LOAD);
2427
}
2528
}

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)