Flutter Web:运行后console中不停的打印debug日志

简介: 我们用android studio直接运行flutter web项目,会启动chrome来执行,这时候如果我打开开发者工具(右键-》检查),就会发现非常卡(前提是用Html Render来渲染,用CanvasKit好像就没问题)在console上边的操作栏上可以看到一个数字在不停的增长,这是因为console默认不显示debug日志,所以这些日志回以计数的形式显示。我们在操作栏的level中将debug选中,就会看到debug日志了。

我们用android studio直接运行flutter web项目,会启动chrome来执行,这时候如果我打开开发者工具(右键-》检查),就会发现非常卡

(前提是用Html Render来渲染,用CanvasKit好像就没问题)

在console上边的操作栏上可以看到一个数字在不停的增长,这是因为console默认不显示debug日志,所以这些日志回以计数的形式显示。我们在操作栏的level中将debug选中,就会看到debug日志了。


这时候就会看到大量的重复日志,如下:

dart.developer.postEvent Flutter.Frame {"number":365,"startTime":19493879,"elapsed":1459,"build":791,"raster":664,"vsyncOverhead":4}

dart.developer.postEvent Flutter.Frame {"number":365,"startTime":19493879,"elapsed":1459,"build":791,"raster":664,"vsyncOverhead":4}

dart.developer.postEvent Flutter.Frame {"number":365,"startTime":19493879,"elapsed":1459,"build":791,"raster":664,"vsyncOverhead":4}


这些日志量非常大,且增加很快,很快就会达到几万几十万,导致整个开发者工具甚至chrome都非常卡。

通过console可以看到这些日志产生于一个developer_patch.dart文件中,相对路径是


/dart-sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart


那么这个文件在哪里?最终我在flutter sdk的目录中找到


/flutter/bin/cache/dart-sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart


其中95行左右有这样的代码:


@patch
void _postEvent(String eventKind, String eventData) {
   JS('', 'console.debug("dart.developer.postEvent", #, #)', eventKind,
       eventData);
}
复制代码


可以看到这个函数只是打印日志,但是我将这两行代码注释掉后依然无效,日志还在不停的打印。

通过google查询,发现这个问题很多人都遇到过,在flutter的github上还建立了issuesgithub.com/flutter/flu…


看大家的评论,目前官方好像还没有解决,我用的是flutter最新版本2.0.5还存在这样的问题(而且之前用dev的1.x版本还没有这样的问题,感觉是flutter2.0之后出现的)。也没有一个设置可以关闭这个日志。

目前我没有看到在这个issues下面有靠谱的解决方法,但是当我们打包发布后,在运行的时候就不会有这个日志,而且通过日志信息可以猜到这个日志仅在debug情况下,所以我们可以以release的方式来运行。


在Android studio的运行栏选择Edit Configurations,然后在main.dart的右边栏中找到Additional arguments,这里就是配置启动参数的,我们添加--release即可,再次运行就会以release的形式运行,运行后就会发现不再打印这些日志了。


注意:


添加--release会造成三个问题:

1、在android studio上无法看到运行时的日志,不过日志可以在chrome的开发者工具中来看

2、无法debug调试了,所以如果需要debug就必须去掉--release

3、flutter的热部署功能失效了,所以同样如果想使用热部署也不能使用--release


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
10月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
476 1
|
前端开发 JavaScript 程序员
鸿蒙开发:console日志输出
针对初学者而言,大家只需要掌握住日志打印即可,等到了鸿蒙应用开发的时候,还有一个鸿蒙原生的打印工具HiLog,到时,我们也会详细的去讲述,也会针对HiLog,封装一个通用的工具类。
571 11
鸿蒙开发:console日志输出
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
756 8
|
运维 监控 安全
系统日志规范问题之日志打印等级的DEBUG的定义如何解决
系统日志规范问题之日志打印等级的DEBUG的定义如何解决
|
监控 前端开发 安全
系统日志使用问题之DEBUG级别的日志主要用于什么阶段
系统日志使用问题之DEBUG级别的日志主要用于什么阶段
|
开发框架 NoSQL 前端开发
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
955 0
|
Prometheus 监控 Cloud Native
Web服务器的日志分析与监控
【8月更文第28天】Web服务器日志提供了关于服务器活动的重要信息,包括访问记录、错误报告以及性能数据。有效地分析这些日志可以帮助我们了解用户行为、诊断问题、优化网站性能,并确保服务的高可用性。本文将介绍如何使用日志分析和实时监控工具来监测Web服务器的状态和性能指标,并提供具体的代码示例。
1304 0
【Azure 应用服务】通过 Web.config 开启 dotnet 应用的 stdoutLog 日志,查看App Service 产生500错误的原因
【Azure 应用服务】通过 Web.config 开启 dotnet 应用的 stdoutLog 日志,查看App Service 产生500错误的原因
467 0