public void output(PrintWriter out) {
    if (entries.size() == 0) {
      return;
    }

    ColumnPrinter printer = build();

    out.println("Configuration Details");
    printer.print(out);
  }
  public void output(Logger log) {
    if (entries.size() == 0) {
      return;
    }

    ColumnPrinter printer = build();

    log.debug("Configuration Details");
    for (String line : printer.generate()) {
      log.debug(line);
    }
  }
  private ColumnPrinter build() {
    ColumnPrinter printer = new ColumnPrinter();

    printer.addColumn("PROPERTY");
    printer.addColumn("FIELD");
    printer.addColumn("DEFAULT");
    printer.addColumn("VALUE");
    printer.addColumn("DESCRIPTION");

    for (Entry entry : entries.values()) {
      printer.addValue(0, entry.configurationName);
      printer.addValue(1, entry.field.getDeclaringClass().getName() + "#" + entry.field.getName());
      printer.addValue(2, entry.defaultValue);
      printer.addValue(3, entry.has ? entry.value : "");
      printer.addValue(4, entry.documentation);
    }
    return printer;
  }