1 package net.sf.openrocket.logging;
3 import net.sf.openrocket.util.BugException;
7 * Base class for all loggers used in OpenRocket.
9 * This class contains methods for logging at various log levels, and methods
10 * which take the logging level as a parameter. All methods may take three types
13 * <li><code>levels</code> number of additional levels of the stack trace to print
14 * on the log line. This is useful to determine from where
15 * the current method has been called. Zero if not provided.
16 * <li><code>message</code> the String message (may be null).
17 * <li><code>cause</code> the exception that caused this log (may be null).
20 * @author Sampo Niskanen <sampo.niskanen@iki.fi>
22 public abstract class LogHelper {
24 private static final DelegatorLogger delegator = new DelegatorLogger();
27 * Get the logger to be used in logging.
29 * @return the logger to be used in all logging.
31 public static LogHelper getInstance() {
38 * Log a LogLine object. This method needs to be able to cope with multiple threads
39 * accessing it concurrently (for example being synchronized).
41 * @param line the LogLine to log.
43 public abstract void log(LogLine line);
48 * Log using DEBUG level.
50 * @param message the logged message (may be null).
52 public void debug(String message) {
53 log(createLogLine(0, LogLevel.DEBUG, message, null));
57 * Log using DEBUG level.
59 * @param message the logged message (may be null).
60 * @param cause the causing exception (may be null).
62 public void debug(String message, Throwable cause) {
63 log(createLogLine(0, LogLevel.DEBUG, message, cause));
67 * Log using DEBUG level.
69 * @param levels number of additional levels of stack trace to include.
70 * @param message the logged message (may be null).
72 public void debug(int levels, String message) {
73 log(createLogLine(levels, LogLevel.DEBUG, message, null));
77 * Log using DEBUG level.
79 * @param levels number of additional levels of stack trace to include.
80 * @param message the logged message (may be null).
81 * @param cause the causing exception (may be null).
83 public void debug(int levels, String message, Throwable cause) {
84 log(createLogLine(levels, LogLevel.DEBUG, message, cause));
89 * Log using INFO level.
91 * @param message the logged message (may be null).
93 public void info(String message) {
94 log(createLogLine(0, LogLevel.INFO, message, null));
98 * Log using INFO level.
100 * @param message the logged message (may be null).
101 * @param cause the causing exception (may be null).
103 public void info(String message, Throwable cause) {
104 log(createLogLine(0, LogLevel.INFO, message, cause));
108 * Log using INFO level.
110 * @param levels number of additional levels of stack trace to include.
111 * @param message the logged message (may be null).
113 public void info(int levels, String message) {
114 log(createLogLine(levels, LogLevel.INFO, message, null));
118 * Log using INFO level.
120 * @param levels number of additional levels of stack trace to include.
121 * @param message the logged message (may be null).
122 * @param cause the causing exception (may be null).
124 public void info(int levels, String message, Throwable cause) {
125 log(createLogLine(levels, LogLevel.INFO, message, cause));
130 * Log using USER level.
132 * @param message the logged message (may be null).
134 public void user(String message) {
135 log(createLogLine(0, LogLevel.USER, message, null));
139 * Log using USER level.
141 * @param message the logged message (may be null).
142 * @param cause the causing exception (may be null).
144 public void user(String message, Throwable cause) {
145 log(createLogLine(0, LogLevel.USER, message, cause));
149 * Log using USER level.
151 * @param levels number of additional levels of stack trace to include.
152 * @param message the logged message (may be null).
154 public void user(int levels, String message) {
155 log(createLogLine(levels, LogLevel.USER, message, null));
159 * Log using USER level.
161 * @param levels number of additional levels of stack trace to include.
162 * @param message the logged message (may be null).
163 * @param cause the causing exception (may be null).
165 public void user(int levels, String message, Throwable cause) {
166 log(createLogLine(levels, LogLevel.USER, message, cause));
171 * Log using WARN level.
173 * @param message the logged message (may be null).
175 public void warn(String message) {
176 log(createLogLine(0, LogLevel.WARN, message, null));
180 * Log using WARN level.
182 * @param message the logged message (may be null).
183 * @param cause the causing exception (may be null).
185 public void warn(String message, Throwable cause) {
186 log(createLogLine(0, LogLevel.WARN, message, cause));
190 * Log using WARN level.
192 * @param levels number of additional levels of stack trace to include.
193 * @param message the logged message (may be null).
195 public void warn(int levels, String message) {
196 log(createLogLine(levels, LogLevel.WARN, message, null));
200 * Log using WARN level.
202 * @param levels number of additional levels of stack trace to include.
203 * @param message the logged message (may be null).
204 * @param cause the causing exception (may be null).
206 public void warn(int levels, String message, Throwable cause) {
207 log(createLogLine(levels, LogLevel.WARN, message, cause));
212 * Log using ERROR level.
214 * @param message the logged message (may be null).
216 public void error(String message) {
217 log(createLogLine(0, LogLevel.ERROR, message, null));
221 * Log using ERROR level.
223 * @param message the logged message (may be null).
224 * @param cause the causing exception (may be null).
226 public void error(String message, Throwable cause) {
227 log(createLogLine(0, LogLevel.ERROR, message, cause));
231 * Log using ERROR level.
233 * @param levels number of additional levels of stack trace to include.
234 * @param message the logged message (may be null).
236 public void error(int levels, String message) {
237 log(createLogLine(levels, LogLevel.ERROR, message, null));
241 * Log using ERROR level.
243 * @param levels number of additional levels of stack trace to include.
244 * @param message the logged message (may be null).
245 * @param cause the causing exception (may be null).
247 public void error(int levels, String message, Throwable cause) {
248 log(createLogLine(levels, LogLevel.ERROR, message, cause));
254 * Log using the provided log level.
256 * @param level the logging level.
257 * @param message the logged message (may be null).
259 public void log(LogLevel level, String message) {
260 log(createLogLine(0, level, message, null));
264 * Log using the provided log level.
266 * @param level the logging level.
267 * @param message the logged message (may be null).
268 * @param cause the causing exception (may be null).
270 public void log(LogLevel level, String message, Throwable cause) {
271 log(createLogLine(0, level, message, cause));
275 * Log using the provided log level.
277 * @param levels number of additional levels of stack trace to include.
278 * @param level the logging level.
279 * @param message the logged message (may be null).
281 public void log(int levels, LogLevel level, String message) {
282 log(createLogLine(levels, level, message, null));
286 * Log using the provided log level.
288 * @param levels number of additional levels of stack trace to include.
289 * @param level the logging level.
290 * @param message the logged message (may be null).
291 * @param cause the causing exception (may be null).
293 public void log(int levels, LogLevel level, String message, Throwable cause) {
294 log(createLogLine(levels, level, message, cause));
300 * Instantiates, logs and throws a BugException. The message is logged at
303 * This method never returns normally.
305 * @param message the message for the log and exception.
306 * @throws BugException always.
308 public void throwBugException(String message) throws BugException {
309 BugException e = new BugException(message);
310 log(createLogLine(0, LogLevel.ERROR, message, e));
315 * Instantiates, logs and throws a BugException. The message is logged at
316 * ERROR level with the specified cause.
318 * This method never returns normally.
320 * @param message the message for the log and exception.
321 * @param cause the causing exception (may be null).
322 * @throws BugException always.
324 public void throwBugException(String message, Throwable cause) throws BugException {
325 BugException e = new BugException(message, cause);
326 log(createLogLine(0, LogLevel.ERROR, message, cause));
334 * Create a LogLine object from the provided information. This method must be
335 * called directly from the called method in order for the trace position
338 * @param additionalLevels how many additional stack trace levels to include on the line.
339 * @param level the log level.
340 * @param message the log message (null ok).
341 * @param cause the log exception (null ok).
343 * @return a LogLine populated with all necessary fields.
345 private LogLine createLogLine(int additionalLevels, LogLevel level, String message,
347 TraceException trace = new TraceException(2, 2 + additionalLevels);
348 return new LogLine(level, trace, message, cause);