object Logger { def make_file(log_file: Option[Path], guard_time: Time = Time.min): Logger =
log_file match { case Some(file) => new File_Logger(file, guard_time) case None => new Logger
}
def make_progress(progress: => Progress, guard_time: Time = Time.min): Logger = { val t = guard_time new Logger { overrideval guard_time: Time = t overridedef output(msg: => String): Unit = if (progress != null) progress.echo(msg)
}
}
def make_system_log(progress: => Progress, options: Options, guard_time: Time = Time.min): Logger =
options.string("system_log") match { case"" => new Logger case"-" => make_progress(progress, guard_time = guard_time) case log_file => make_file(Some(Path.explode(log_file)), guard_time = guard_time)
}
}
class Logger { val guard_time: Time = Time.min def guard(t: Time): Boolean = t >= guard_time def output(msg: => String): Unit = {}
finaldef apply(msg: => String, time: Option[Time] = None): Unit = if (time.isEmpty || guard(time.get)) output(msg)
class File_Logger(path: Path, overrideval guard_time: Time = Time.min) extends Logger { overridedef output(msg: => String): Unit = synchronized { File.append(path, msg + "\n") } overridedef toString: String = path.toString
}
class System_Logger(overrideval guard_time: Time = Time.min) extends Logger { overridedef output(msg: => String): Unit = synchronized { if (System.console != null && System.console.writer != null) {
System.console.writer.println(msg)
System.console.writer.flush()
} elseif (System.out != null) {
System.out.println(msg)
System.out.flush()
}
}
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-05-06)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.