The current AsyncSocketAppender was an improvement over the older log4j configuration options, but it did not fully satisfy the description in
What we really need is an appender which can be managed by configuration alone, without using code to reload it with new system properties when the location of the monitor changes.
So, rather than having a ZK watcher reload the log4j system, the appender itself should internally detect the relocation of the monitor and adjust its behavior accordingly. That way, the configuration files do not need to refer to system properties for the hostname/port of the monitor, and there is no need to reload the log4j logging when things change.
This will allow us to remove more custom log4j code, which gets us closer to users having the ability to use another implementation for the slf4j API (though this feature of logging to the monitor might not be available for other slf4j implementations, unless they support using log4j appenders).