KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > javacoding > jspider > core > logging > LogFactory


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 JavaDoc;
7 import java.util.Map JavaDoc;
8
9 /**
10  * $Id: LogFactory.java,v 1.6 2003/04/02 20:55:07 vanrogu Exp $
11  */

12 public class LogFactory {
13
14     public static String JavaDoc[][] replacements = {
15         {"net.javacoding.jspider.", ""}
16     };
17
18     public static Map JavaDoc loggers = new HashMap JavaDoc ( );
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 JavaDoc providerClass = logProps.getClass(ConfigConstants.CONFIG_LOG_PROVIDER, SystemOutLogProvider.class);
28         try {
29             provider = (LogProvider) providerClass.newInstance();
30         } catch (InstantiationException JavaDoc e) {
31             // CANNOT HAPPEN - WE CHECKED BEFORE
32
} catch (IllegalAccessException JavaDoc e) {
33             // SHOULDN'T HAPPEN - NOT GONNA HANDLE IT
34
}
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 JavaDoc category ) {
45         return getLog ( category.getName() );
46     }
47
48     public static synchronized Log getLog ( String JavaDoc category ) {
49         String JavaDoc 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 JavaDoc category) {
59       return provider.createLog(category);
60     }
61
62     protected static String JavaDoc translate ( String JavaDoc category ) {
63        String JavaDoc effectiveCategory = category;
64         for (int i = 0; i < replacements.length; i++) {
65             String JavaDoc[] 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