view src/goodjava/logger/ThreadLocalAppender.java @ 1503:74c534de211f

use InheritableThreadLocal in ThreadLocalAppender
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 10 May 2020 23:28:16 -0600
parents 219f2b937f2b
children
line wrap: on
line source

package goodjava.logger;


public final class ThreadLocalAppender implements Appender {
	public volatile Appender defaultAppender;
	public final ThreadLocal<Appender> threadLocal = new InheritableThreadLocal<Appender>();

	public ThreadLocalAppender(Appender defaultAppender) {
		this.defaultAppender = defaultAppender;
	}

	public void append(LoggingEvent event) {
		Appender appender = threadLocal.get();
		if( appender == null )
			appender = defaultAppender;
		appender.append(event);
	}

	public void close() {
		defaultAppender.close();
	}
}