头图

我们都知道这个问题:我们想调试打印我们的应用程序,但聊天中的信息只是一团糟。它们没有格式化,很难得到一个概览....,这实在是不好玩。这就是为什么我将向你介绍 logger 包,它正好解决了这个问题。让我们开始吧!

注意:Logger 可能如下所示:

image.png

安装

创建应用程序后我们要做的第一件事就是添加logger。为此,我们将使用命令 dart pub add logger。您应该熟悉这些命令,否则,我建议您再次查看 Flutter 的基础知识。

还有一个叫 logger_flutter的包,如果你使用Flutter,就可以使用它。如果你安装了这个,你可以摇晃你的手机,它将在手机上显示控制台。你可以用 flutter pub add logger_flutter 来安装它。你手机上的控制台可能看起来像这样:

image.png

基础

首先,你必须创建一个 logger 变量。如果你使用像Riverpod这样的包,你可以把它们存储在一个提供者中,以便在整个应用程序中访问它们(在这里学习Riverpod

在这里,我们已经有了许多关于日志程序外观的选项:

image.png

现在我们想在控制台中显示一些东西。有多个日志级别,我将在此处列出:

image.png

深入了解和高级用法

我们来谈谈 LogFilterLogPrinterLogOutput。它们用于更多地定制您对日志的体验:

LogFilter

LogFilter 决定应该显示哪些日志事件,哪些不显示。默认设置为 DevelopmentFilter,在调试模式下显示所有 level >= Logger.level的日志,但在发布模式下,所有日志都将被忽略。当然,你可以创建你自己的 LogFilter。为此,您必须创建一个扩展 LogFilter 的类并创建一个名为 shouldLog 的函数。

image.png

LogPrinter

LogPrinter 创建并格式化输出,然后将其发送到 LogOutput(我们将在下一章讨论 LogOutput)。当然,你可以实现自己的 LogPrinter

image.png

本软件包的作者说明:

如果您创建了一个可能对其他人有帮助的酷 LogPrinter,请随时打开拉取请求。 :)

LogOutput

LogOutput 负责将日志行发送到所需的目的地。它的默认实现 ConsoleOutput 将每一行发送到系统控制台。有可能,将来 LogOutput 可以将文件发送到 firebaseLogcat

image.png

进一步阅读和结论

在本文中,您了解了控制台管理器“logger”的基础知识。您已经看到了它的易用性以及控制台输出的美观程度。

如果您使用 Freezed、Isar 或 Flutter Hooks 等软件包,您可以充分发挥 logger 的全部功能。如果你想学习这些附加功能,我有关于它们的完整教程。在这里查看它们。

在接下来的几篇文章中,我将介绍更多有点复杂的包,并对它们进行解释。如果你不想错过这些,我建议你关注我。我尽力写出最简单的教程,让大家都能理解。如果你欣赏这项工作,如果你能支持这个高质量的内容,并给我一些掌声,我将非常感激!


杭州程序员张张
11.8k 声望6.7k 粉丝

Web/Flutter/独立开发者/铲屎官