1 package net.javacoding.jspider.core.logging; 2 3 import net.javacoding.jspider.core.logging.impl.SystemOutLogProvider; 4 import net.javacoding.jspider.core.util.config.*; 5 6 import java.util.HashMap ; 7 import java.util.Map ; 8 9 12 public class LogFactory { 13 14 public static String [][] replacements = { 15 {"net.javacoding.jspider.", ""} 16 }; 17 18 public static Map loggers = new HashMap ( ); 19 public static LogFactory instance; 20 21 protected LogProvider provider; 22 23 24 protected LogFactory ( ) { 25 PropertySet props = ConfigurationFactory.getConfiguration().getJSpiderConfiguration(); 26 PropertySet logProps = new MappedPropertySet ( ConfigConstants.CONFIG_LOG, props); 27 Class providerClass = logProps.getClass(ConfigConstants.CONFIG_LOG_PROVIDER, SystemOutLogProvider.class); 28 try { 29 provider = (LogProvider) providerClass.newInstance(); 30 } catch (InstantiationException e) { 31 } catch (IllegalAccessException e) { 33 } 35 } 36 37 protected static synchronized LogFactory getInstance ( ) { 38 if ( instance == null ) { 39 instance = new LogFactory ( ); 40 } 41 return instance; 42 } 43 44 public static synchronized Log getLog ( Class category ) { 45 return getLog ( category.getName() ); 46 } 47 48 public static synchronized Log getLog ( String category ) { 49 String effectiveCategory = translate ( category ); 50 Log log = (Log) loggers.get ( effectiveCategory ); 51 if ( log == null ) { 52 log = getInstance().instantiate(effectiveCategory); 53 loggers.put(effectiveCategory, log); 54 } 55 return log; 56 } 57 58 protected Log instantiate(String category) { 59 return provider.createLog(category); 60 } 61 62 protected static String translate ( String category ) { 63 String effectiveCategory = category; 64 for (int i = 0; i < replacements.length; i++) { 65 String [] replacement = replacements[i]; 66 if ( category.startsWith(replacement[0])) { 67 effectiveCategory = replacement[1] + category.substring(replacement[0].length()); 68 break; 69 } 70 } 71 return effectiveCategory; 72 } 73 74 } 75 | Popular Tags |