I have no issue with the listener aspect -- a context listener is a great way to set up application-wide information, for example. What I question is the wisdom of having one Log4J logger that all classes use. Since this eliminates the benefits of Log4J's hierarchical logger system, why bother to use Log4J at all?
A common pattern is for each class to create its own logger using the fully qualified name of the class. This not only tells you which class logged the message, it gives you a great deal of control over the logging environment.
For example, you can turn DEBUG logging on for only a single class, or for the package hierarchy that the class is in at any level. This is much more useful than having a single logger that emits tons of debug statement from all the classes that you need to wade through to find the relevant messages.