X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2FTraceHandler.java;h=daa3743f387832d446f91cea0ba119747f1167aa;hp=6541a8bfd5b9add51643686a7f641f250b201809;hb=8537d55a7dacf9f528ea9453b03d2391ea348846;hpb=d309f977b2f80988b0275b5ec1d6f95c2d615841 diff --git a/src/be/nikiroo/utils/TraceHandler.java b/src/be/nikiroo/utils/TraceHandler.java index 6541a8b..daa3743 100644 --- a/src/be/nikiroo/utils/TraceHandler.java +++ b/src/be/nikiroo/utils/TraceHandler.java @@ -7,9 +7,9 @@ package be.nikiroo.utils; * @author niki */ public class TraceHandler { - private boolean showErrors; - private boolean showTraces; - private boolean showErrorDetails; + private final boolean showErrors; + private final boolean showErrorDetails; + private final int traceLevel; /** * Create a default {@link TraceHandler} that will print errors on stderr @@ -27,13 +27,38 @@ public class TraceHandler { * @param showErrorDetails * show more details when printing errors * @param showTraces - * show traces on stdout + * show level 1 traces on stdout, or no traces at all */ public TraceHandler(boolean showErrors, boolean showErrorDetails, boolean showTraces) { + this(showErrors, showErrorDetails, showTraces ? 1 : 0); + } + + /** + * Create a default {@link TraceHandler}. + * + * @param showErrors + * show errors on stderr + * @param showErrorDetails + * show more details when printing errors + * @param traceLevel + * show traces of this level or lower (0 means "no traces", + * higher means more traces) + */ + public TraceHandler(boolean showErrors, boolean showErrorDetails, + int traceLevel) { this.showErrors = showErrors; this.showErrorDetails = showErrorDetails; - this.showTraces = showTraces; + this.traceLevel = Math.max(traceLevel, 0); + } + + /** + * The trace level of this {@link TraceHandler}. + * + * @return the level + */ + public int getTraceLevel() { + return traceLevel; } /** @@ -67,13 +92,32 @@ public class TraceHandler { /** * A trace happened, show it. *

- * Will only be effective if {@link TraceHandler#showTraces} is true. + * By default, will only be effective if {@link TraceHandler#showTraces} is + * true + *

+ * A call to this method is equivalent to a call to + * {@link TraceHandler#trace(String, int)} with a level of 1. * * @param message * the trace message */ public void trace(String message) { - if (showTraces) { + trace(message, 1); + } + + /** + * A trace happened, show it. + *

+ * By default, will only be effective if {@link TraceHandler#showTraces} is + * true and the level is lower or equal to {@link TraceHandler#traceLevel}. + * + * @param message + * the trace message + * @param level + * the trace level + */ + public void trace(String message, int level) { + if (traceLevel > 0 && level <= traceLevel) { System.out.println(message); } }