欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Flutter - 集成三方库:日志(logger)

Flutter - 集成三方库:日志(logger)

2025/11/28 23:17:59 来源:https://blog.csdn.net/iJason92/article/details/148011596  浏览:    关键词:Flutter - 集成三方库:日志(logger)

日志

使用print方法时,会提示

2025-05-15 20.52.59.png

添加依赖

$ flutter pub add logger

下载依赖

$ flutter pub get

使用

打印
import 'package:logger/logger.dart';var logger = Logger();
logger.d("debug");
logger.e("error");
logger.i("info");
logger.f("fatal");
logger.w("warning");
logger.t("trace");

2025-05-15 21.02.31.png

设置打印级别
/// The current logging level of the app.
/// All logs with levels below this level will be omitted.
/// 设置打印级别,低于level的不会被打印
Logger.level;
enum Level {all(0),('[verbose] is being deprecated in favor of [trace].')verbose(999),trace(1000),debug(2000),info(3000),warning(4000),error(5000),('[wtf] is being deprecated in favor of [fatal].')wtf(5999),fatal(6000),('[nothing] is being deprecated in favor of [off].')nothing(9999),off(10000),;final int value;const Level(this.value);
}
打印到文件
/// 使用 getApplicationDocumentsDirectory 需要
/// 添加 path_provider
/// flutter pub add path_provider
/// flutter pub ge 
/// - `NSDocumentDirectory` on iOS and macOS.
/// - The Flutter engine's `PathUtils.getDataDirectory` API on Android.
Directory documentDir = await getApplicationDocumentsDirectory();
var logger = Logger(output: FileOutput(file: File("${documentDir.path}/log.txt")),
);
打印到控制台+文件
Directory documentDir = await getApplicationDocumentsDirectory();
FileOutput fileOutPut = FileOutput(file: File("${documentDir.path}/log.txt"),
);
ConsoleOutput consoleOutput = ConsoleOutput();
List<LogOutput> multiOutput = [fileOutPut, consoleOutput];
var logger = Logger(output: MultiOutput(multiOutput),
);

2025-05-16 16.00.23.png

打印时间

Logger构造函数有个printer参数可以指定输出格式

var logger = Logger(filter: null, // Use the default LogFilter (-> only log in debug mode)printer: PrettyPrinter(dateTimeFormat: DateTimeFormat.dateAndTime),output: MultiOutput(multiOutput),
);

2025-05-16 16.05.54.png

打印过滤器

默认的过滤器(DevelopmentFilter)在debug模式下可以打印所有level >= Logger.level的日志,在Release模式下所有日志被忽略。

比如设置Release模式下只打印warning级别以上(含warning)的日志

class MyFilter extends LogFilter {bool shouldLog(LogEvent event) {if (event.level.value < Logger.level.value) {return false;}return true;}
}
...
const bool inProduction = bool.fromEnvironment("dart.vm.product");
if (inProduction) {Logger.level = Level.warning;
}
...ConsoleOutput consoleOutput = ConsoleOutput();List<LogOutput> multiOutput = [fileOutPut, consoleOutput];var logger = Logger(filter:MyFilter(), // Use the default LogFilter (-> only log in debug mode)printer: PrettyPrinter(dateTimeFormat: DateTimeFormat.dateAndTime),output: MultiOutput(multiOutput),
);logger.d("debug");
logger.e("error");
logger.i("info");
logger.f("fatal");
logger.w("warning");
logger.t("trace");

2025-05-16 16.40.34.png

参考

  1. logger
  2. Flutter-文件系统目录和文件读写
  3. Flutter: How to show log output in console and automatically store it?
  4. Flutter中如何判断当前运行模式是Debug还是Release

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词