@@ -0,0 +1,1425 @@
+package de.sormuras.bach;%0A%0Aimport java.io.PrintWriter;%0A%0A/*BODY*/%0A/** Simplistic logging support. */%0Apublic /*STATIC*/ class Log %7B%0A%0A  /** Create new Log instance using system default text output streams. */%0A  public static Log ofSystem() %7B%0A    var verbose = Boolean.getBoolean(%22verbose%22);%0A    var debug = Boolean.getBoolean(%22ebug%22) %7C%7C %22%22.equals(System.getProperty(%22ebug%22));%0A    return ofSystem(verbose %7C%7C debug);%0A  %7D%0A%0A  /** Create new Log instance using system default text output streams. */%0A  public static Log ofSystem(boolean verbose) %7B%0A    return new Log(new PrintWriter(System.out, true), new PrintWriter(System.err, true), verbose);%0A  %7D%0A%0A  /** Text-output writer. */%0A  /*PRIVATE*/ final PrintWriter out, err;%0A  /** Be verbose. */%0A  /*PRIVATE*/ final boolean verbose;%0A%0A  public Log(PrintWriter out, PrintWriter err, boolean verbose) %7B%0A    this.out = out;%0A    this.err = err;%0A    this.verbose = verbose;%0A  %7D%0A%0A  /** Print %22debug%22 message to the standard output stream. */%0A  public void debug(String format, Object... args) %7B%0A    if (verbose) out.println(String.format(format, args));%0A  %7D%0A%0A  /** Print %22information%22 message to the standard output stream. */%0A  public void info(String format, Object... args) %7B%0A    out.println(String.format(format, args));%0A  %7D%0A%0A  /** Print %22warn%22 message to the error output stream. */%0A  public void warn(String format, Object... args) %7B%0A    err.println(String.format(format, args));%0A  %7D%0A%7D%0A

Introduce Log