Flutter logger 1.3.0无法在Xcode控制台输出问题求助
问题:logger 1.3.0无法在iOS Xcode控制台输出日志
我使用Flutter Stable 3.3.5、Dart 2.18.2以及logger 1.3.0包编写了代码,Android的Logcat中可正常查看应用生命周期状态变化的日志,但iOS的Xcode控制台里完全看不到logger输出的内容,只有print语句能正常显示。相关代码如下:
import 'package:log_printer.dart'; class MyApp extends StatefulWidget { @override State<StatefulWidget> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> with WidgetsBindingObserver { final logger = getLogger('Lifecycle change'); @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); } @override dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override void didChangeAppLifecycleState(AppLifecycleState state) { switch (state) { case AppLifecycleState.resumed: print("resume"); logger.v("resume"); break; case AppLifecycleState.inactive: print("inactive"); logger.v("inactive"); break; case AppLifecycleState.paused: print("paused"); logger.v("paused"); break; case AppLifecycleState.detached: print("detached"); logger.v("detached"); break; } } }
解决办法
1. 检查logger的输出级别配置
logger 1.3.0默认的输出级别可能在iOS环境下限制了verbose级别的日志。初始化logger时明确设置输出级别为Level.verbose:
final logger = Logger( level: Level.verbose, printer: PrettyPrinter(), // 若用自定义打印器,确保级别配置正确 );
2. 调整Xcode控制台过滤设置
Xcode可能默认过滤了低级别日志:
- 打开Xcode控制台,点击顶部过滤框,选择
All Messages,取消任何自定义过滤条件。 - 也可以尝试在过滤框输入你的日志标签
Lifecycle change,精准查找logger输出。
3. 升级logger包到最新版本
logger 1.3.0是较旧的版本,存在iOS平台适配bug的概率较高。更新pubspec.yaml中的依赖:
dependencies: logger: ^2.0.2+1 # 替换为当前最新稳定版
执行flutter pub get后重新运行项目测试。
4. 排查自定义LogPrinter的逻辑
你导入了自定义的log_printer.dart,如果这个打印器只针对Android做了适配(比如仅调用Android Logcat API),iOS端就不会输出日志。可以临时替换为logger默认的PrettyPrinter测试,确认是否是自定义打印器的问题。
5. 确认运行模式
如果是在release模式下运行iOS应用,Flutter会默认关闭debug日志输出,包括logger的日志。确保在debug模式下测试,或者如果必须在release模式输出,需要手动配置logger强制输出(不推荐,会影响性能)。
内容的提问来源于stack exchange,提问作者VanCoon
相关产品推荐
相关产品推荐

