Ho trovato una soluzione, non so se sia la migliore ma nel mio caso ha funzionato. La posto nel caso possa aiutare qualcun altro.
Creare un context listner custom dove salvare una variabile di sistema con il path della webapp
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class AppContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext context = servletContextEvent.getServletContext();
System.setProperty("rootPath", context.getRealPath("/"));
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
nell'esempio, salvo la variabile di sistema rootPath.
Utilizzare questa variabile nella configurazione del log4j2.xml (riporto solo la parte modificata rispetto a quanto postato sopra)
...
<Property name="LOG_DIR_PATH">${sys:rootPath}WEB-INF/logs</Property>
...
In questo modo, supponendo che la webapp venga rilasciata al path C:\Tomcat\WebAppTest, il file main.log sarà creato al path C:\Tomcat\WebAppTest\WEB-INF\logs