diff src/goodjava/logger/GoodLoggerFactory.java @ 1450:28b1ddacfad3

logger work
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 01 Mar 2020 13:47:02 -0700
parents 6fc083e1d08c
children 219f2b937f2b
line wrap: on
line diff
--- a/src/goodjava/logger/GoodLoggerFactory.java	Fri Feb 28 21:14:23 2020 -0700
+++ b/src/goodjava/logger/GoodLoggerFactory.java	Sun Mar 01 13:47:02 2020 -0700
@@ -2,19 +2,39 @@
 
 import java.util.Map;
 import java.util.HashMap;
-import goodjava.logging.ILoggerFactory;
-import goodjava.logging.Logger;
 
 
-public class GoodLoggerFactory implements ILoggerFactory {
-	private final Map<String,GoodLogger> map = new HashMap<String,GoodLogger>();
+public final class GoodLoggerFactory {
+	private GoodLoggerFactory() {}  // never
 
-	@Override public synchronized Logger getLogger(String name) {
+	public static final Configurer DEFAULT_CONFIGURER;
+	static {
+		Layout layout = new ListLayout(Layouts.LEVEL," - ",Layouts.MESSAGE,"\n",Layouts.THROWABLE);
+		Appender appender = new ConsoleAppender(layout,System.err);
+		DEFAULT_CONFIGURER = new SimpleConfigurer(Level.INFO,appender);
+	}
+	private static final Map<String,GoodLogger> map = new HashMap<String,GoodLogger>();
+	private static Configurer configurer = DEFAULT_CONFIGURER;
+
+	public static synchronized GoodLogger getLogger(String name) {
 		GoodLogger logger = map.get(name);
 		if( logger == null ) {
 			logger = new GoodLogger(name);
+			configurer.configure(logger);
 			map.put(name,logger);
 		}
 		return logger;
 	}
+
+	public static synchronized Configurer getConfigurer() {
+		return configurer;
+	}
+
+	public static synchronized void setConfigurer(Configurer configurer) {
+		GoodLoggerFactory.configurer = configurer;
+		for( GoodLogger logger : map.values() ) {
+			configurer.configure(logger);
+		}
+	}
+
 }