package rocks.inspectit.server.test; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import org.slf4j.LoggerFactory; import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests; import org.testng.annotations.BeforeSuite; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; import ch.qos.logback.core.joran.spi.JoranException; import ch.qos.logback.core.util.StatusPrinter; import rocks.inspectit.server.CMR; import rocks.inspectit.shared.all.util.ResourcesPathResolver; /** * This abstract class provides general logging support for the test classes that need transactional * spring context. * * @author Eduard Tudenhoefner * */ public abstract class AbstractTransactionalTestNGLogSupport extends AbstractTransactionalTestNGSpringContextTests { /** * Init logging. */ @BeforeSuite public void initLogging() throws IOException { LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(context); context.reset(); Path logPath = ResourcesPathResolver.getResourceFile(CMR.DEFAULT_LOG_FILE_NAME).toPath().toAbsolutePath(); try (InputStream is = Files.newInputStream(logPath, StandardOpenOption.READ)) { configurator.doConfigure(is); } catch (JoranException je) { // NOPMD StatusPrinter will handle this } StatusPrinter.printInCaseOfErrorsOrWarnings(context); } }