various fixes/cleanup: old producers are now completely gone, old logfile class too
[mir.git] / source / mir / log / log4j / LoggerImpl.java
1 package mir.log.log4j;\r
2 \r
3 import mir.config.MirPropertiesConfiguration;\r
4 import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;\r
5 \r
6 import org.apache.log4j.PropertyConfigurator;\r
7 import org.apache.log4j.Logger;\r
8 \r
9 import java.util.Map;\r
10 import java.util.HashMap;\r
11 \r
12 \r
13 public class LoggerImpl implements mir.log.Logger {\r
14   private static Map loggers = new HashMap();\r
15 \r
16   public LoggerImpl() throws PropertiesConfigExc {\r
17     System.setProperty("log.home",\r
18         MirPropertiesConfiguration.instance().getStringWithHome("Log.Home"));\r
19     PropertyConfigurator.configure(\r
20         MirPropertiesConfiguration.instance().getStringWithHome("Log.log4j.ConfigurationFile").trim());\r
21   }\r
22 \r
23   public void debug(Object o, String s) {\r
24     this.getLogger(o).debug(s);\r
25   }\r
26 \r
27   public void info(Object o, String s) {\r
28     this.getLogger(o).info(s);\r
29   }\r
30 \r
31   public void warn(Object o, String s) {\r
32     this.getLogger(o).warn(s);\r
33   }\r
34 \r
35   public void error(Object o, String s) {\r
36     this.getLogger(o).error(s);\r
37   }\r
38 \r
39   public void fatal(Object o, String s) {\r
40     this.getLogger(o).fatal(s);\r
41   }\r
42 \r
43   private Logger getLogger(Object o) {\r
44     String name;\r
45     Logger l;\r
46 \r
47     if (o instanceof String) {\r
48       name = (String) o;\r
49     }\r
50     else if (o instanceof Class) {\r
51       name = ( (Class) o).getName();\r
52     }\r
53     else if (o != null) {\r
54       name = o.getClass().getName();\r
55     }\r
56     else {\r
57       name = "generic";\r
58     }\r
59 \r
60     synchronized (loggers) {\r
61       l = (Logger) loggers.get(name);\r
62       if (l == null) {\r
63         if (!loggers.containsKey(name)) {\r
64           l = Logger.getLogger(name);\r
65           loggers.put(name, l);\r
66         }\r
67         l = (Logger) loggers.get(name);\r
68       }\r
69     }\r
70 \r
71     return l;\r
72   }\r
73 }