For more information about JUnit 5, I suggest reading the JUnit 5 User Guide.
In JUnit 5, if you want to execute a method before each test, then you can use the @BeforeEach annotation. To get information about the test to be executed you can give the method a TestInfo parameter which will be automatically injected for you. For example:
import java.lang.reflect.Method;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
// import logger...
class XXXTests {
  final Logger logger = ...;
  @BeforeEach
  void logStartOfTest(TestInfo info) {
    logger.info("STARTING test: " + info.getMethod().map(Method::getName).orElse(null));
  }
  @Test
  void testFoo() {
    // perform assertions
  }
}
If you don't want to have to write that for every test, then you can create your own extension that implements BeforeEachCallback. For example:
import java.lang.reflect.Method;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
// import logger..
public class MyExtension implements BeforeEachCallback {
    final Logger logger = ...;
    @Override
    public void beforeEach(ExtensionContext context) {
        logger.info("STARTING test: " + context.getTestMethod().map(Method::getName).orElse(null));
    }
}
Then apply your extension:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(MyExtension.class)
class XXXTests {
    @Test
    void testFoo() {
        // perform assertions
    }
}
Your extension class can implement multiple extension interfaces. If you want to watch for success and failure, then you can also implement org.junit.jupiter.api.extension.TestWatcher, but note that interface only became stable API in JUnit 5.7 (I believe it was added in version 5.4).