Logger

小型、易于使用且可扩展的日志记录器,可打印漂亮的日志。
受 Android 的 logger 启发。

入门

只需创建一个 Logger 实例即可开始记录

var logger = Logger();

logger.d("Logger is working!");

除了字符串消息,您还可以传递其他对象,如 ListMapSet

输出

日志控制台

如果您正在创建 Flutter 应用,您可以使用 logger_flutter 扩展。摇动手机即可显示设备上的控制台。

文档

日志级别

您可以按不同级别记录

logger.v("Verbose log");

logger.d("Debug log");

logger.i("Info log");

logger.w("Warning log");

logger.e("Error log");

logger.wtf("What a terrible failure log");

要仅显示特定的日志级别,您可以设置

Logger.level = Level.warning;

这将隐藏所有 verbosedebuginfo 日志事件。

选项

在创建 logger 时,您可以传递一些选项

var logger = Logger(
  filter: null, // Use the default LogFilter (-> only log in debug mode)
  printer: PrettyPrinter(), // Use the PrettyPrinter to format and print log
  output: null, // Use the default LogOutput (-> send everything to console)
);

如果您使用 PrettyPrinter,还有更多选项

var logger = Logger(
  printer: PrettyPrinter(
    methodCount: 2, // number of method calls to be displayed
    errorMethodCount: 8, // number of method calls if stacktrace is provided
    lineLength: 120, // width of the output
    colors: true, // Colorful log messages
    printEmojis: true, // Print an emoji for each log message
    printTime: false // Should each log print contain a timestamp
  ),
)

LogFilter

LogFilter 决定哪些日志事件应显示,哪些不应显示。

默认实现 (DebugFilter) 在调试模式下显示所有级别 >= Logger.level 的日志。在发布模式下,所有日志都会被忽略。

您可以像这样创建自己的 LogFilter

class MyFilter extends LogFilter {
  @override
  bool shouldLog(LogEvent event) {
    return true;
  }
}

这将显示所有日志,即使在发布模式下也是如此。(是好主意)

LogPrinter

LogPrinter 创建并格式化输出,然后发送到 LogOutput

您可以实现自己的 LogPrinter。这为您提供了最大的灵活性。

一个非常基本的打印器可能看起来像这样

class MyPrinter extends LogPrinter {
  @override
  void log(LogEvent event) {
    println(event.message);
  }
}

重要提示:每个实现都必须使用 println() 方法发送其输出。

如果您创建了一个很酷的 LogPrinter,并且可能对他人有所帮助,请随时提交一个 pull request。:)

LogOutput

LogOutput 将日志行发送到所需的目的地。

默认实现 (ConsoleOutput) 将每一行发送到系统控制台。

class ConsoleOutput extends LogOutput {
  @override
  void output(OutputEvent event) {
    for (var line in event.lines) {
      print(line);
    }
  }
}

未来可能的 LogOutputs 可以发送到文件、firebase 或 Logcat。请随时提交 pull request。

logger_flutter 扩展

logger_flutter 包是 logger 的一个扩展。您可以将其添加到任何 Flutter 应用中。只需摇动手机即可显示控制台。

  1. 将 logger_flutter 添加到您的 pubspec.yaml
  2. 将以下代码添加到您的 widget 树中
LogConsoleOnShake(
  child: Container() // Your widgets
),

更多文档即将推出。

GitHub

https://github.com/leisim/logger