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() {
37 public abstract void log(LogLine line);
42 * Log using DEBUG level.
44 * @param message the logged message (may be null).
46 public void debug(String message) {
47 log(createLogLine(0, LogLevel.DEBUG, message, null));
51 * Log using DEBUG level.
53 * @param message the logged message (may be null).
54 * @param cause the causing exception (may be null).
56 public void debug(String message, Throwable cause) {
57 log(createLogLine(0, LogLevel.DEBUG, message, cause));
61 * Log using DEBUG level.
63 * @param levels number of additional levels of stack trace to include.
64 * @param message the logged message (may be null).
66 public void debug(int levels, String message) {
67 log(createLogLine(levels, LogLevel.DEBUG, message, null));
71 * Log using DEBUG level.
73 * @param levels number of additional levels of stack trace to include.
74 * @param message the logged message (may be null).
75 * @param cause the causing exception (may be null).
77 public void debug(int levels, String message, Throwable cause) {
78 log(createLogLine(levels, LogLevel.DEBUG, message, cause));
83 * Log using INFO level.
85 * @param message the logged message (may be null).
87 public void info(String message) {
88 log(createLogLine(0, LogLevel.INFO, message, null));
92 * Log using INFO level.
94 * @param message the logged message (may be null).
95 * @param cause the causing exception (may be null).
97 public void info(String message, Throwable cause) {
98 log(createLogLine(0, LogLevel.INFO, message, cause));
102 * Log using INFO level.
104 * @param levels number of additional levels of stack trace to include.
105 * @param message the logged message (may be null).
107 public void info(int levels, String message) {
108 log(createLogLine(levels, LogLevel.INFO, message, null));
112 * Log using INFO level.
114 * @param levels number of additional levels of stack trace to include.
115 * @param message the logged message (may be null).
116 * @param cause the causing exception (may be null).
118 public void info(int levels, String message, Throwable cause) {
119 log(createLogLine(levels, LogLevel.INFO, message, cause));
124 * Log using USER level.
126 * @param message the logged message (may be null).
128 public void user(String message) {
129 log(createLogLine(0, LogLevel.USER, message, null));
133 * Log using USER level.
135 * @param message the logged message (may be null).
136 * @param cause the causing exception (may be null).
138 public void user(String message, Throwable cause) {
139 log(createLogLine(0, LogLevel.USER, message, cause));
143 * Log using USER level.
145 * @param levels number of additional levels of stack trace to include.
146 * @param message the logged message (may be null).
148 public void user(int levels, String message) {
149 log(createLogLine(levels, LogLevel.USER, message, null));
153 * Log using USER level.
155 * @param levels number of additional levels of stack trace to include.
156 * @param message the logged message (may be null).
157 * @param cause the causing exception (may be null).
159 public void user(int levels, String message, Throwable cause) {
160 log(createLogLine(levels, LogLevel.USER, message, cause));
165 * Log using WARN level.
167 * @param message the logged message (may be null).
169 public void warn(String message) {
170 log(createLogLine(0, LogLevel.WARN, message, null));
174 * Log using WARN level.
176 * @param message the logged message (may be null).
177 * @param cause the causing exception (may be null).
179 public void warn(String message, Throwable cause) {
180 log(createLogLine(0, LogLevel.WARN, message, cause));
184 * Log using WARN level.
186 * @param levels number of additional levels of stack trace to include.
187 * @param message the logged message (may be null).
189 public void warn(int levels, String message) {
190 log(createLogLine(levels, LogLevel.WARN, message, null));
194 * Log using WARN level.
196 * @param levels number of additional levels of stack trace to include.
197 * @param message the logged message (may be null).
198 * @param cause the causing exception (may be null).
200 public void warn(int levels, String message, Throwable cause) {
201 log(createLogLine(levels, LogLevel.WARN, message, cause));
206 * Log using ERROR level.
208 * @param message the logged message (may be null).
210 public void error(String message) {
211 log(createLogLine(0, LogLevel.ERROR, message, null));
215 * Log using ERROR level.
217 * @param message the logged message (may be null).
218 * @param cause the causing exception (may be null).
220 public void error(String message, Throwable cause) {
221 log(createLogLine(0, LogLevel.ERROR, message, cause));
225 * Log using ERROR level.
227 * @param levels number of additional levels of stack trace to include.
228 * @param message the logged message (may be null).
230 public void error(int levels, String message) {
231 log(createLogLine(levels, LogLevel.ERROR, message, null));
235 * Log using ERROR level.
237 * @param levels number of additional levels of stack trace to include.
238 * @param message the logged message (may be null).
239 * @param cause the causing exception (may be null).
241 public void error(int levels, String message, Throwable cause) {
242 log(createLogLine(levels, LogLevel.ERROR, message, cause));
248 * Log using the provided log level.
250 * @param level the logging level.
251 * @param message the logged message (may be null).
253 public void log(LogLevel level, String message) {
254 log(createLogLine(0, level, message, null));
258 * Log using the provided log level.
260 * @param level the logging level.
261 * @param message the logged message (may be null).
262 * @param cause the causing exception (may be null).
264 public void log(LogLevel level, String message, Throwable cause) {
265 log(createLogLine(0, level, message, cause));
269 * Log using the provided log level.
271 * @param levels number of additional levels of stack trace to include.
272 * @param level the logging level.
273 * @param message the logged message (may be null).
275 public void log(int levels, LogLevel level, String message) {
276 log(createLogLine(levels, level, message, null));
280 * Log using the provided log level.
282 * @param levels number of additional levels of stack trace to include.
283 * @param level the logging level.
284 * @param message the logged message (may be null).
285 * @param cause the causing exception (may be null).
287 public void log(int levels, LogLevel level, String message, Throwable cause) {
288 log(createLogLine(levels, level, message, cause));
294 * Instantiates, logs and throws a BugException. The message is logged at
297 * This method never returns normally.
299 * @param message the message for the log and exception.
300 * @throws BugException always.
302 public void throwBugException(String message) throws BugException {
303 BugException e = new BugException(message);
304 log(createLogLine(0, LogLevel.ERROR, message, e));
309 * Instantiates, logs and throws a BugException. The message is logged at
310 * ERROR level with the specified cause.
312 * This method never returns normally.
314 * @param message the message for the log and exception.
315 * @param cause the causing exception (may be null).
316 * @throws BugException always.
318 public void throwBugException(String message, Throwable cause) throws BugException {
319 BugException e = new BugException(message, cause);
320 log(createLogLine(0, LogLevel.ERROR, message, cause));
328 * Create a LogLine object from the provided information. This method must be
329 * called directly from the called method in order for the trace position
332 * @param additionalLevels how many additional stack trace levels to include on the line.
333 * @param level the log level.
334 * @param message the log message (null ok).
335 * @param cause the log exception (null ok).
337 * @return a LogLine populated with all necessary fields.
339 private LogLine createLogLine(int additionalLevels, LogLevel level, String message,
341 TraceException trace = new TraceException(2, 2 + additionalLevels);
342 return new LogLine(level, trace, message, cause);