I do not know if my suggestion here would exactly match with the question being asked, but my problem looks similar.
My problem was that logs were not being written to log file specified in log4j.properties. I was using websphere which had several applications deployed.
Class loading policy in websphere console was Multiple and parent last, as mentioned above. (i cross-checked).
I had no clue, what is going wrong and why logs are not getting generated.
At last, I made a struts-web-app as given on the link :
https://www.javawebtutor.com/articles/maven/maven_struts_example.php
I added log4j-1.2.8.jar to it and I added the code in the else block before going to success.jsp
and in success.jsp, I just printed the path from where log4j.properties was being picked up.
What I saw after a while was that my logs of POC project was being printed, and ALSO my other app (which was actually having problem), its logs were also getting printed in the same log file (of POC project).
From this behavior I can only say that may be the instance of the logger is singleton for a websphere instance. I am not very sure of this, but the behavior seems like that only.
May be my problem was that some other log4j settings were overwriting my instance of the actual application.