Ok, in case it helps someone else, I have fixed this the hard way.
The gvpbackend.jar that is put into the WEB-INF/lib directory has a class called com.genesyslab.studio.backendlogic.BackendLogManager that first checks for a log4j.xml configuration in the global Tomcat lib directory and then uses that if it finds it - but that doesn't solve the problem because then all the Composer apps share the configuration which means that they all still log to the same place. If it doesn't find that log4j.xml file it runs the following code:
[code]
localStringBuilder.append("log4j.rootCategory=DEBUG, R\n");
localStringBuilder.append("log4j.logger.com.dappit.Dapper.parser=ERROR\n");
localStringBuilder.append("log4j.logger.org.w3c.tidy=FATAL\n");
localStringBuilder.append("log4j.appender.R = org.apache.log4j.RollingFileAppender\n");
localStringBuilder.append("log4j.appender.R.File = ${catalina.home}/logs/default_composer.log\n");
localStringBuilder.append("log4j.appender.R.Append = true\n");
localStringBuilder.append("log4j.appender.R.layout = org.apache.log4j.PatternLayout\n");
localStringBuilder.append("log4j.appender.R.layout.ConversionPattern = %d %c{1} [%p] - %m%n\n");
[/code]
So what that means is that log4j works PERFECTLY fine and uses the the webapp's WEB-INF/lib/log4j.xml file (which is placed there by Composer) until the first Backend block in the IVR executes. From them on the rootCategory is changed to point to default_composer.log or wherever the global log4j.xml files says and all the logging for every Composer app ends up in the same file.
In order to make it continue to read from the webapp's WEB-INF/lib/log4j.xml or WEB-INF/classes/log4j.properties you need to delete the code in gvpbackend.jar that changes the log4j configuration and then recompile the jar file. After that it all works fine...