Flutter日志记录插件loggerw的使用
Flutter日志记录插件loggerw的使用
loggerw
是一个轻量级且易于使用的日志记录插件,它能够打印出美观的日志并将其记录到你选择的API中。该插件受到了 Android 中的 logger
插件的启发。
资源
入门指南
只需创建一个 Logger
的实例并开始记录日志:
var logger = Logger();
logger.d("Logger is working!");
除了字符串消息,你还可以传递其他对象,如 List
、Map
或 Set
。
输出
日志级别
你可以使用不同的日志级别:
logger.t("Trace log"); // 跟踪日志
logger.d("Debug log"); // 调试日志
logger.i("Info log"); // 信息日志
logger.w("Warning log"); // 警告日志
logger.e("Error log", error: 'Test Error'); // 错误日志
logger.f("What a fatal log", error: error, stackTrace: stackTrace); // 致命日志
若要仅显示特定级别的日志,可以设置:
Logger.level = Level.warning; // 隐藏跟踪、调试和信息日志
选项
在创建 Logger
实例时,可以传递一些选项:
var logger = Logger(
filter: null, // 使用默认的 LogFilter(仅在调试模式下记录)
printer: PrettyPrinter(), // 使用 PrettyPrinter 格式化和打印日志
output: null, // 使用默认的 LogOutput(发送到控制台)
apiURL: "${dotenv.env['API_URL']}/logs", // 可选:将日志发送到指定的 API URL
);
如果你使用了 PrettyPrinter
,则可以有更多的选项:
var logger = Logger(
printer: PrettyPrinter(
methodCount: 2, // 显示的方法调用数量
errorMethodCount: 8, // 如果提供了堆栈跟踪,则显示的方法调用数量
lineLength: 120, // 输出宽度
colors: true, // 彩色日志消息
printEmojis: true, // 每个日志消息打印表情符号
printTime: false // 每个日志是否包含时间戳
),
apiURL: "${dotenv.env['API_URL']}/logs", // 可选:将日志发送到指定的 API URL
);
将日志发送到API
现在你可以通过 Logger
类将日志发送到指定的API URL。新的可选参数 apiURL
允许你提供日志信息将被发送的目标URL。
var logger = Logger(
filter: null,
printer: PrettyPrinter(),
output: null,
apiURL: "${dotenv.env['API_URL']}/logs", // 可选:将日志发送到指定的 API URL
);
自动检测
通过 io
包可以自动检测 lineLength
和 colors
参数。
假设你已经导入了 io
包(import 'dart:io' as io;
),你可以通过 io.stdout.supportsAnsiEscapes
自动检测 colors
,并通过 io.stdout.terminalColumns
自动检测 lineLength
。
除非有特殊原因不希望导入 io
(例如在Web上使用此库),否则你应该这样做。
LogFilter
LogFilter
决定哪些日志事件应该被显示,哪些不应该。
默认实现(DevelopmentFilter
)在调试模式下显示所有 level >= Logger.level
的日志,而在发布模式下会忽略所有日志。
你可以创建自己的 LogFilter
如下所示:
class MyFilter extends LogFilter {
[@override](/user/override)
bool shouldLog(LogEvent event) {
return true;
}
}
这将即使在发布模式下也会显示所有日志。(不是好主意)
LogPrinter
LogPrinter
创建并格式化输出,然后将其发送到 LogOutput
。
你可以实现自己的 LogPrinter
。这将给你最大的灵活性。
一个非常基础的打印机可能看起来像这样:
class MyPrinter extends LogPrinter {
[@override](/user/override)
List<String> log(LogEvent event) {
return [event.message];
}
}
如果你创建了一个可能对其他人有用的 LogPrinter
,请随意提交一个拉取请求。
颜色
请注意,在某些情况下,ANSI 转义序列在 macOS 下不起作用。这些转义序列用于颜色化输出。这似乎与影响iOS构建的 Flutter bug 有关: https://github.com/flutter/flutter/issues/64491
然而,如果你正在使用 JetBrains IDE(如 Android Studio、IntelliJ 等),你可以使用
Grep Console 插件 和
PrefixPrinter
装饰器来实现任何日志的颜色化:
var logger = Logger(
printer: PrefixPrinter(PrettyPrinter(colors: false))
);
LogOutput
LogOutput
将日志行发送到所需的目的地。
默认实现(ConsoleOutput
)将每一行发送到系统控制台。
class ConsoleOutput extends LogOutput {
[@override](/user/override)
void output(OutputEvent event) {
for (var line in event.lines) {
print(line);
}
}
}
更多关于Flutter日志记录插件loggerw的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html