developer.log不打印日志。
developer.log不打印日志。
这是另一个问题的重复。实际上,我有完全相同的问题,并且提供Logger.root.onRecord.listen
没有帮助。此外,这个答案报告说developer.log()可以用来将数据记录到Flutter控制台。
源代码:
import 'dart:io';
import 'dart:developer' as developer;
import 'package:logging/logging.dart';
void main(List
stderr.writeln('Hello from stderr');
stdout.writeln('Hello from stdout');
print('Hello from print');
print('Logger level ${Logger.root.level}');
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen((r) => print(r));
var log = Logger('MyLogger');
for (var level in Level.LEVELS) {
print('Level: $level, isLoggable: ${log.isLoggable(level)}');
log.log(level, 'Log message with level $level');
}
developer.log('Hello from developer.log');
}
这将产生以下输出:
/opt/java/jdk/flutter/bin/cache/dart-sdk/bin/dart --enable-asserts /home/m_pashka/Projects/tests/flutter/dart-test1/bin/dart_test3.dart
Hello from stdout
Hello from print
Logger level INFO
Level: ALL, isLoggable: true
[ALL] MyLogger: Log message with level ALL
Level: FINEST, isLoggable: true
[FINEST] MyLogger: Log message with level FINEST
Level: FINER, isLoggable: true
[FINER] MyLogger: Log message with level FINER
Level: FINE, isLoggable: true
[FINE] MyLogger: Log message with level FINE
Level: CONFIG, isLoggable: true
[CONFIG] MyLogger: Log message with level CONFIG
Level: INFO, isLoggable: true
[INFO] MyLogger: Log message with level INFO
Level: WARNING, isLoggable: true
[WARNING] MyLogger: Log message with level WARNING
Level: SEVERE, isLoggable: true
[SEVERE] MyLogger: Log message with level SEVERE
Level: SHOUT, isLoggable: true
[SHOUT] MyLogger: Log message with level SHOUT
Level: OFF, isLoggable: true
[OFF] MyLogger: Log message with level OFF
Hello from stderr
Process finished with exit code 0
没有Hello from developer.log
这一行。我还尝试了不同的Dart版本:2.0.0、2.13.4、2.14.4。
我使用Dart命令行运行示例:
还在Dart Pad中尝试了这个片段:
import 'dart:developer' as developer;
void main() {
developer.log('Hello from developer.log');
developer.log('log me', name: 'my.app.category');
print('Hello from print');
}
输出是:
Hello from print
问题出现的原因:
在Dart中,使用developer.log()
方法打印日志时,并不会将日志直接打印到控制台中,而是会触发事件,可以通过DevTools的Logging View来观察这些事件。因此,如果只在控制台中查看日志,是无法看到developer.log()
打印的内容的。
解决方法:
要查看developer.log()
打印的日志内容,需要安装并启动DevTools,并将Dart命令行应用程序与DevTools连接起来。具体步骤如下:
1. 使用命令dart pub global activate devtools
安装DevTools;
2. 使用命令dart pub global run devtools
启动DevTools(可选);
3. 使用命令dart run --pause-isolates-on-start --observe main.dart
启动主要的Dart文件,并连接到DevTools。在这一步中,可以选择将短链接放入DevTools的Web界面中,或者使用长链接在浏览器中打开DevTools;
4. 在DevTools网页的顶部打开"Logging"选项卡,然后恢复应用程序的执行,即可观察到日志信息。
需要注意的是,Flutter应用程序调试页面的日志记录部分的文档并不完全正确。文档中提到可以在DevTools的Logging View或系统控制台中查看日志,但没有提到stderr.writeln()
方法的日志可以在Logging View中看到,而developer.log()
方法的日志却无法在控制台输出中看到。此外,为什么Intellij Idea/Android Studio中没有显示Logging View也是不清楚的。
为了解决这个问题,创建了一个Intellij Idea问题来反馈这个情况。