当前位置: 首页 > 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

相关文章:

  • 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场景制作如何完成?
  • 病愈出院、跳大神消灾也办酒,新华每日电讯:农村滥办酒席何时休
  • 舱位已排到月底,跨境电商忙补货!美线订单大增面临爆舱,6月运价或翻倍
  • 俄方代表团抵达土耳其,俄乌直接谈判有望于当地时间上午重启
  • 缅甸内观冥想的历史漂流:从心理治疗室到“非语言现场”
  • 4台肺癌手术,2名“90后”患者,这届年轻人的肺怎么了?
  • 京东一季度净利增长五成,营收增速创近三年新高,称外卖业务取得显著进展