developer.log不打印日志。

19 浏览
0 Comments

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 arguments) {

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-sdk/bin/dart --enable-asserts /.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

0
0 Comments

在开发过程中,有一个问题是developer.log无法打印日志。为了解决这个问题,可以尝试使用logger包。使用logger包可以轻松地根据下面列出的不同标签打印不同类型的响应。

logger.v("Verbose log");

logger.d("Debug log");

logger.i("Info log");

logger.w("Warning log");

logger.e("Error log");

logger.wtf("What a terrible failure log");

这样就可以使用logger包来打印不同类型的日志了。

0
0 Comments

问题出现的原因:

在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问题来反馈这个情况。

0