4eb83aacd68f19ca1d9ac425322f63feeb60b860
[jalview.git] / src / jalview / bin / Console.java
1 package jalview.bin;
2
3 import jalview.log.JLogger;
4 import jalview.log.JLoggerI.LogLevel;
5 import jalview.log.JLoggerLog4j;
6 import jalview.util.ChannelProperties;
7 import jalview.util.Log4j;
8 import jalview.util.Platform;
9
10 public class Console
11 {
12
13   public static JLoggerLog4j log;
14
15   public static void debug(String message, Throwable t)
16   {
17     if (Console.initLogger())
18     {
19       log.debug(message, t);
20     }
21     else
22     {
23       System.out.println(message);
24       t.printStackTrace();
25     }
26
27   }
28
29   public static void info(String message)
30   {
31     if (Console.initLogger())
32     {
33       log.info(message, null);
34     }
35     else
36     {
37       System.out.println(message);
38     }
39
40   }
41
42   public static void trace(String message, Throwable t)
43   {
44     if (Console.initLogger())
45     {
46       log.trace(message, t);
47     }
48     else
49     {
50       System.out.println(message);
51       t.printStackTrace();
52     }
53   }
54
55   public static void debug(String message)
56   {
57     if (Console.initLogger())
58     {
59       log.debug(message, null);
60     }
61     else
62     {
63       System.out.println(message);
64     }
65
66   }
67
68   public static void info(String message, Throwable t)
69   {
70     if (Console.initLogger())
71     {
72       log.info(message, t);
73     }
74     else
75     {
76       System.out.println(message);
77       t.printStackTrace();
78     }
79
80   }
81
82   public static void warn(String message)
83   {
84     if (Console.initLogger())
85     {
86       log.warn(message, null);
87     }
88     else
89     {
90       System.out.println(message);
91     }
92
93   }
94
95   public static void trace(String message)
96   {
97     if (Console.initLogger())
98     {
99       log.trace(message, null);
100     }
101     else
102     {
103       System.out.println(message);
104     }
105   }
106
107   public static void warn(String message, Throwable t)
108   {
109     if (Console.initLogger())
110     {
111       log.warn(message, t);
112     }
113     else
114     {
115       System.out.println(message);
116       t.printStackTrace();
117     }
118
119   }
120
121   public static void error(String message)
122   {
123     if (Console.initLogger())
124     {
125       log.error(message, null);
126     }
127     else
128     {
129       System.err.println(message);
130     }
131
132   }
133
134   public static void error(String message, Throwable t)
135   {
136     if (Console.initLogger())
137     {
138       log.error(message, t);
139     }
140     else
141     {
142       System.err.println(message);
143       t.printStackTrace(System.err);
144     }
145
146   }
147
148   public static void fatal(String message)
149   {
150     if (Console.initLogger())
151     {
152       log.fatal(message, null);
153     }
154     else
155     {
156       System.err.println(message);
157     }
158
159   }
160
161   public static void fatal(String message, Throwable t)
162   {
163     if (Console.initLogger())
164     {
165       log.fatal(message, t);
166     }
167     else
168     {
169       System.err.println(message);
170       t.printStackTrace(System.err);
171     }
172
173   }
174
175   public static boolean isDebugEnabled()
176   {
177     return log == null ? false : log.isDebugEnabled();
178   }
179
180   public static boolean isTraceEnabled()
181   {
182     return log == null ? false : log.isTraceEnabled();
183   }
184
185   public static JLogger.LogLevel getCachedLogLevel()
186   {
187     return Console.getCachedLogLevel(Cache.JALVIEWLOGLEVEL);
188   }
189
190   public static JLogger.LogLevel getCachedLogLevel(String key)
191   {
192     return JLogger.toLevel(Cache.getDefault(key, "INFO"));
193   }
194
195   public static boolean initLogger()
196   {
197     if (log != null)
198     {
199       return true;
200     }
201     try
202     {
203       JLogger.LogLevel cachedLevel = getCachedLogLevel();
204       if (!Platform.isJS())
205       {
206         Log4j.init(cachedLevel);
207       }
208       // log output
209       // is laxis used? Does getLogger do anything without a Logger object?
210       // Logger laxis = Log4j.getLogger("org.apache.axis", myLevel);
211       JLoggerLog4j.getLogger("org.apache.axis", cachedLevel);
212
213       // The main application logger
214       log = JLoggerLog4j.getLogger(Cache.JALVIEW_LOGGER_NAME, cachedLevel);
215     } catch (NoClassDefFoundError e)
216     {
217       System.err.println("Could not initialise the logger framework");
218       e.printStackTrace();
219     }
220
221     // Test message
222     if (log != null)
223     {
224       // Logging test message should got through the logger object
225       if (log.loggerExists())
226         log.debug(Console.LOGGING_TEST_MESSAGE);
227       // Tell the user that debug is enabled
228       debug(ChannelProperties.getProperty("app_name")
229               + " Debugging Output Follows.");
230       return true;
231     }
232     else
233     {
234       return false;
235     }
236   }
237
238   public final static String LOGGING_TEST_MESSAGE = "Logging to STDERR";
239
240 }