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

flutter 中各种日志

日志方法对比

输出方式调试模式控制台输出发布模式控制台输出DevTools Logging 视图
print()✅ 显示✅ 显示❌ 不显示
debugPrint()✅ 显示✅ 显示❌ 不显示
stderr.writeln()✅ 显示✅ 显示✅ 显示
dart:developer.log()✅ 显示❌ 不显示✅ 显示

详细说明:

  • print():​在调试模式和发布模式下都会输出到控制台,但不会显示在 DevTools 的 Logging 视图中。​

  • debugPrint():​在调试模式和发布模式下都会输出到控制台,但不会显示在 DevTools 的 Logging 视图中。​

  • stderr.writeln():​在调试模式和发布模式下都会输出到控制台,并且会显示在 DevTools 的 Logging 视图中,适用于输出错误信息。​

  • dart:developer.log():​在调试模式下会输出到控制台,会显示在 DevTools 的 Logging 视图中,适用于生成结构化的日志事件。​

同时输出到控制台和 DevTools 的建议:

要实现日志同时显示在控制台和 DevTools 的 Logging 视图中,建议使用 stderr.writeln()。​这种方法的输出既能在控制台查看,也能在 DevTools 中进行结构化分析。​

如果您希望在调试模式下使用 print()debugPrint(),并在发布模式下使用 stderr.writeln(),可以通过以下方式实现:​

import 'dart:io';void logMessage(String message) {if (kReleaseMode) {stderr.writeln(message); // 发布模式下输出到 stderr} else {print(message); // 调试模式下输出到控制台}
}

在上述代码中,logMessage 函数会根据当前模式选择合适的输出方式。​

使用这种方法,您可以在调试模式下使用 print()debugPrint(),在发布模式下使用 stderr.writeln(),从而实现日志同时显示在控制台和 DevTools 的 Logging 视图中。​

验证debug模式

注意:debug模式 我发现怎么都可以显示在devtools面板中

🔍 性能对比与使用建议

方法性能影响特点与适用场景
print()中等(同步阻塞)简单直接,适用于开发阶段的快速调试。​在生产环境中频繁使用可能导致性能下降。
debugPrint()较低(异步处理)自动分段长文本,防止日志丢失。​适用于输出长文本,开发阶段使用。
developer.log()低(结构化日志)支持日志级别、时间戳等元信息,适用于需要结构化日志的调试和分析阶段。​在生产环境中不会输出到控制台。
stderr.writeln()中等(同步阻塞)将错误信息输出到标准错误流,适用于错误日志的输出。​在生产环境中使用需谨慎,可能影响性能。

设置 debugPrint 为自定义函数(动态控制开关)

bool enableDebugLog = true;void initDebugPrint() {debugPrint = (String? message, {int? wrapWidth}) {if (enableDebugLog && message != null) {print('📘 $message'); // 你可以替换成你自己的逻辑}};
}

使用 Zone 拦截 print(高级玩法)

void main() {runZonedGuarded(() {runApp(MyApp());}, (error, stack) {}, zoneSpecification: ZoneSpecification(print: (self, parent, zone, line) {if (kDebugMode) {parent.print(zone, "📘 $line");}},));
}

相关文章:

  • 无感字符编码原址转换术——系统内存(Mermaid文本图表版/DeepSeek)
  • express查看文件上传报文,处理文件上传,以及formidable包的使用
  • 深入浅出 Python 协程:从异步基础到开发测试工具的实践指南
  • 了解低功耗蓝牙中的安全密钥
  • JavaScript性能优化实战(4):异步编程与主线程优化
  • 从被动运维到智能预警:某省人防办借力智和信通运维方案实现效能跃升
  • NXP----SVR5510芯片layout设计总结
  • 2025年04月24日Github流行趋势
  • 离线电脑安装python包
  • C++智能指针上
  • 深入探索Spark-Streaming:从Kafka数据源创建DStream
  • C语言-函数-1
  • 【刷题】第三弹——二叉树篇(上)
  • 【C++ 真题】P3456 [POI2007] GRZ-Ridges and Valleys
  • AI大模型从0到1记录学习 数据结构和算法 day20
  • 【Linux】网络基础和socket(4)
  • SQL进阶知识:六、动态SQL
  • 济南国网数字化培训班学习笔记-第二组-5节-输电线路设计
  • 解决 PostgreSQL 检查约束导致的数据插入异常问题
  • 网络IP冲突的成因与解决方案
  • 我国首次发布铁线礁、牛轭礁珊瑚礁“体检”报告,菲炮制言论毫无科学和事实依据
  • 中国经济“第一省会”广州,从传统商贸中心到直播电商第一城
  • 昆明一小区电梯突然从40楼降到负4楼,回应:临时断电引起
  • “两高”司法解释:升档为境外非法提供商业秘密罪的量刑标准
  • 国防部:“台独”武装摆练纯属搞心理安慰,怎么演都是溃败的死局
  • 消费者买国外电话卡使用时无信号,店铺:运营商故障,较少见