当前位置: 首页 > 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.xdnf.cn/news/483499.html

相关文章:

  • 【深度学习】#11 优化算法
  • 麒麟服务器操作系统安装 MySQL 8 实战指南
  • EC800X_DP-DTU-Q600R 系列开发板介绍
  • QML 动画控制、顺序动画与并行动画
  • 25考研经验贴(11408)
  • 智能呼叫系统中的NLP意图理解:核心技术解析与实战
  • 游戏引擎学习第286天:开始解耦实体行为
  • R1 快开门式压力容器操作证备考练习题及答案
  • 2025程序设计天梯赛补题报告
  • 《数字藏品APP开发:解锁高效用户身份认证与KYC流程》
  • xss-labs靶场第11-14关基础详解
  • 2025认证杯数学建模第二阶段A题完整论文(代码齐全):小行星轨迹预测思路
  • MySQL的 JOIN 优化终极指南
  • RAG-MCP:突破大模型工具调用瓶颈,告别Prompt膨胀
  • Android Studio AI插件与Bolt工具实战指南:从零到一打造智能应用
  • PostgreSQL中的全页写
  • 【python编程从入门到到实践】第十章 文件和异常
  • Spring框架(三)
  • 7.重建大师点云处理教程
  • 每周靶点:PCSK9、Siglec15及文献分享
  • python基础语法(三-中)
  • [Java][Leetcode middle] 238. 除自身以外数组的乘积
  • 学习alpha
  • 【基础】Windows开发设置入门4:Windows、Python、Linux和Node.js包管理器的作用和区别(AI整理)
  • go.mod关于go版本异常的处理
  • 数据治理域——数据同步设计
  • HTML 中的 input 标签详解
  • 芯片测试之X-ray测试
  • 算法练习:19.JZ29 顺时针打印矩阵
  • SpringAI-RC1正式发布:移除千帆大模型!