This sounds like an interesting idea worth pursuing.
On 4 July 2016 at 14:56, Gary Gregory <[email protected]> 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: [email protected] | [email protected]
> 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 <[email protected]>