This sounds like an interesting idea worth pursuing. On 4 July 2016 at 14:56, Gary Gregory <garydgreg...@gmail.com> wrote:
> When I see code like: > > LOGGER.debug("RollingFileManager executing async {}", > descriptor.getAsynchronous()); > thread = new Log4jThread(new > AsyncAction(descriptor.getAsynchronous(), this)); > thread.start(); > > and: > > final Thread thread = new Log4jThread(new > ReconfigurationWorker(listener, reconfigurable)); > thread.setDaemon(true); > thread.start(); > > and other places, I think: "and poof, I've lost track of that thread". > > What if we used a thread pool (ExecutorService) to track all of our > threads? This would allow for at least trying for an orderly shutdown. This > would avoid problems like one part of an app thinking that rollovers should > be done when they are not because a log4j context has been stopped (like in > our test probably) but the rollover thread is still going about doing its > work. > > This would be for 2.7 I think. > > We could then have a different context stop API, maybe with a timeout or > not, something like ExecutorService's shutdown() vs. shutdownNow(). > > Thoughts? > > Happy 4th! > > Gary > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > Java Persistence with Hibernate, Second Edition > <http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > -- Matt Sicker <boa...@gmail.com>