当前位置: 首页 > news >正文

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
http://www.dtcms.com/a/193702.html

相关文章:

  • Java并发编程-线程池(四)
  • 安全版4.5.8开启审计后,hac+读写分离主备切换异常
  • 基于springboot+vue的机场乘客服务系统
  • 图像对比度调整(局域拉普拉斯滤波)
  • 记一次缓存填坑省市区级联获取的操作
  • 2025-5-16Vue3快速上手
  • SqlHelper 实现类,支持多数据库,提供异步操作、自动重试、事务、存储过程、分页、缓存等功能。
  • Spring MVC 中请求处理流程及核心组件解析
  • RK3588 ADB使用
  • 衡量 5G 和未来网络的安全性
  • 算法练习:19.JZ29 顺时针打印矩阵
  • 官方 Elasticsearch SQL NLPChina Elasticsearch SQL
  • 将嵌入映射到 Elasticsearch 字段类型:semantic_text、dense_vector、sparse_vector
  • HarmonyOS开发组件基础
  • 前端脚手架开发指南:提高开发效率的核心操作
  • 在 Kotlin 中,什么是解构,如何使用?
  • 探索嵌入式硬件的世界:技术、应用与未来趋势
  • 小结:jvm 类加载过程
  • python中列表的操作
  • VR场景制作如何完成?
  • 服务器内部可以访问外部网络,docker内部无法访问外部网络,只能docker内部访问
  • Qt功能区:Ribbon使用
  • mathematics-2024《Graph Convolutional Network for Image Restoration: A Survey》
  • OpenCV阈值处理完全指南:从基础到高级应用
  • 八股文--JUC(2)
  • 突发,苹果发布下一代 CarPlay Ultra
  • makefile细节说明
  • 图像锐化调整
  • AI最新资讯,GPT4.1加入网页端、Claude 3.7 Sonnet携“极限推理”发布在即
  • 有什么软件系统可以高效管理工地现场物资材料?