blob: bbdd406d2b9eb2dea53a2f9e4bbd0ec2ec13e3ce [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/**
* A utility class used to write logging information during a test.
*/
class Logger {
/**
* The width of the field in which labels are printed.
*/
static const int _labelWidth = 8;
/**
* The separator used to separate the label from the content.
*/
static const String _separator = ' : ';
/**
* The sink to which the logged information should be written.
*/
final StringSink sink;
/**
* Initialize a newly created logger to write to the given [sink].
*/
Logger(this.sink);
/**
* Log the given information.
*
* The [label] is used to indicate the kind of information being logged, while
* the [content] contains the actual information. If a list of [arguments] is
* provided, then they will be written after the content.
*/
void log(String label, String content, {List<String> arguments = null}) {
for (int i = _labelWidth - label.length; i > 0; i--) {
sink.write(' ');
}
sink.write(label);
sink.write(_separator);
sink.write(content);
arguments?.forEach((String argument) {
sink.write(' ');
sink.write(argument);
});
sink.writeln();
}
}