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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 我们用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


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
46 3
|
3月前
|
Dart 前端开发 Java
|
3月前
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。
|
3月前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之运维中心中的运行日志可以保留多久
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
Android开发 iOS开发
[ionic]解决运行Android、IOS出现Could not find the web assets directory
[ionic]解决运行Android、IOS出现Could not find the web assets directory
38 1
|
3月前
|
Web App开发 移动开发 前端开发
如何优化运行在webkit上的web app
如何优化运行在webkit上的web app
|
3月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
58 0
|
3月前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
146 0
|
4月前
|
分布式计算 资源调度 DataWorks
MaxCompute操作报错合集之出现“查询运行日志失败”的报错,一般是什么导致的
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4月前
|
移动开发 小程序 JavaScript
跨端技术问题之转Web运行时的“框架”模块主要负责什么功能
跨端技术问题之转Web运行时的“框架”模块主要负责什么功能
下一篇
无影云桌面