JAL-3949 Complete new abstracted logging framework in jalview.log. Updated log calls...
[jalview.git] / src / jalview / log / JLoggerLog4j.java
1 package jalview.log;
2
3 import org.apache.logging.log4j.Logger;
4 import org.apache.logging.log4j.core.Appender;
5
6 import jalview.util.Log4j;
7 import jalview.util.Platform;
8
9 public class JLoggerLog4j extends JLogger implements JLoggerI
10 {
11   private Logger logger = null;
12
13   public static JLoggerLog4j getLogger(String name)
14   {
15     return getLogger(name, LogLevel.INFO);
16   }
17
18   public static JLoggerLog4j getLogger(String name, LogLevel loglevel)
19   {
20     return registryContainsKey(name) ? (JLoggerLog4j) registryGet(name)
21             : new JLoggerLog4j(name, loglevel);
22   }
23
24   private JLoggerLog4j(String name, LogLevel level)
25   {
26     // super(name, level);
27     this.name = name;
28     this.level = level;
29     this.loggerSetup();
30     this.registryStore();
31   }
32
33   @Override
34   protected void loggerSetup()
35   {
36     if (!Platform.isJS())
37       this.logger = Log4j.isInit() ? Log4j.getLogger(this.name, this.level)
38               : null;
39   }
40
41   @Override
42   public boolean loggerExists()
43   {
44     return logger != null;
45   }
46
47   @Override
48   protected void loggerSetLevel(JLoggerI.LogLevel level)
49   {
50     if (loggerExists())
51     {
52       Log4j.setLevel(logger, level);
53     }
54   }
55
56   @Override
57   protected void loggerLogMessage(LogLevel level, String message,
58           Throwable t)
59   {
60     if (!loggerExists())
61       return;
62     if (t != null)
63     {
64       switch (level)
65       {
66       case FATAL:
67         logger.fatal(message, t);
68         break;
69       case ERROR:
70         logger.error(message, t);
71         break;
72       case WARN:
73         logger.warn(message, t);
74         break;
75       case INFO:
76         logger.info(message, t);
77         break;
78       case DEBUG:
79         logger.debug(message, t);
80         break;
81       case TRACE:
82         logger.trace(message, t);
83         break;
84       case ALL:
85         logger.trace(message, t);
86         break;
87       }
88     }
89     else
90     {
91       switch (level)
92       {
93       case FATAL:
94         logger.fatal(message);
95         break;
96       case ERROR:
97         logger.error(message);
98         break;
99       case WARN:
100         logger.warn(message);
101         break;
102       case INFO:
103         logger.info(message);
104         break;
105       case DEBUG:
106         logger.debug(message);
107         break;
108       case TRACE:
109         logger.trace(message);
110         break;
111       case ALL:
112         logger.trace(message);
113         break;
114       }
115     }
116   }
117
118   private Logger getLoggerObject()
119   {
120     return this.logger;
121   }
122
123   public synchronized static void addAppender(JLoggerLog4j l1,
124           Appender appender)
125   {
126     if (!Platform.isJS())
127       Log4j.addAppender(l1.getLoggerObject(), appender);
128   }
129
130   public synchronized static void addAppender(JLoggerLog4j l1,
131           JLoggerLog4j l2, String name)
132   {
133     if (!Platform.isJS())
134       Log4j.addAppender(l1.getLoggerObject(), l2.getLoggerObject(), name);
135   }
136
137 }