The new WatchManager introduced in 2.5 uses a ScheduledThreadPoolExecutor so it can roll over triggered by a timer event instead of a log event.
The executor currently uses the standard thread factory, which creates non-daemon threads. This means that applications that use Log4j 2 and have monitorInterval="..." in their configuration will never shut down.
The fix is to pass a DaemonThreadFactory to the ScheduledThreadPoolExecutor constructor. (This also allows us to specify a better name than "pool-1-thread-1".)