LogFactory.java
上传用户:qing5858
上传日期:2015-10-27
资源大小:6056k
文件大小:2k
源码类别:

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.logging;
  2. import net.javacoding.jspider.core.logging.impl.SystemOutLogProvider;
  3. import net.javacoding.jspider.core.util.config.*;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. /**
  7.  * $Id: LogFactory.java,v 1.6 2003/04/02 20:55:07 vanrogu Exp $
  8.  */
  9. public class LogFactory {
  10.     public static String[][] replacements = {
  11.         {"net.javacoding.jspider.", ""}
  12.     };
  13.     public static Map loggers = new HashMap ( );
  14.     public static LogFactory instance;
  15.     protected LogProvider provider;
  16.     protected LogFactory ( ) {
  17.         PropertySet props = ConfigurationFactory.getConfiguration().getJSpiderConfiguration();
  18.         PropertySet logProps = new MappedPropertySet ( ConfigConstants.CONFIG_LOG, props);
  19.         Class providerClass = logProps.getClass(ConfigConstants.CONFIG_LOG_PROVIDER, SystemOutLogProvider.class);
  20.         try {
  21.             provider = (LogProvider) providerClass.newInstance();
  22.         } catch (InstantiationException e) {
  23.             // CANNOT HAPPEN - WE CHECKED BEFORE
  24.         } catch (IllegalAccessException e) {
  25.             // SHOULDN'T HAPPEN - NOT GONNA HANDLE IT
  26.         }
  27.     }
  28.     protected static synchronized LogFactory getInstance ( ) {
  29.         if ( instance == null ) {
  30.             instance = new LogFactory ( );
  31.         }
  32.         return instance;
  33.     }
  34.     public static synchronized Log getLog ( Class category ) {
  35.         return getLog ( category.getName() );
  36.     }
  37.     public static synchronized Log getLog ( String category ) {
  38.         String effectiveCategory = translate ( category );
  39.         Log log = (Log) loggers.get ( effectiveCategory );
  40.         if ( log == null ) {
  41.             log = getInstance().instantiate(effectiveCategory);
  42.             loggers.put(effectiveCategory, log);
  43.         }
  44.         return log;
  45.     }
  46.     protected Log instantiate(String category) {
  47.       return provider.createLog(category);
  48.     }
  49.     protected static String translate ( String category ) {
  50.        String effectiveCategory = category;
  51.         for (int i = 0; i < replacements.length; i++) {
  52.             String[] replacement = replacements[i];
  53.             if ( category.startsWith(replacement[0])) {
  54.                 effectiveCategory = replacement[1] + category.substring(replacement[0].length());
  55.                 break;
  56.             }
  57.         }
  58.         return effectiveCategory;
  59.     }
  60. }