developer.log不打印日志

Pav*_*aev 7 logging dart flutter

这是另一个问题的重复。实际上我有完全相同的问题并且提供Logger.root.onRecord.listen没有帮助。此答案还报告了developer.log()可用于将数据记录到flutter控制台。

源代码:

import 'dart:io';
import 'dart:developer' as developer;

import 'package:logging/logging.dart';

void main(List<String> 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');
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出:

/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
Run Code Online (Sandbox Code Playgroud)

那里没有Hello from developer.log线。我还尝试了不同的 dart 版本:2.0.0、2.13.4、2.14.4。

我使用 dart 命令行来运行示例: <dart_sdk_path>/dart-sdk/bin/dart --enable-asserts <project_path>/<file>.dart

还在Dart Pad中尝试了这个片段:

/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
Run Code Online (Sandbox Code Playgroud)

输出是:

Hello from print
Run Code Online (Sandbox Code Playgroud)

Pav*_*aev 5

正如Christopher Moore 之前提到的,Christopher Mooredeveloper.log()不会在 dart 控制台上打印任何内容。相反,它发出可以通过DevTools日志视图观察到的事件。您可以使用从命令行安装并运行 DevTools来获取有关如何安装和启动 DevTools 的说明,并使用启动Dart DevTools目标应用程序部分来获取命令来启动要在开发工具中观察的 Dart 命令行应用程序。

\n

所以它就像是

\n
    \n
  • # dart pub global activate devtools安装开发工具
  • \n
  • # dart pub global run devtools启动devtools(可以省略)
  • \n
  • # dart run --pause-isolates-on-start --observe main.dart连接 devtools 来启动 main.dart。在此步骤中,您可以使用短 URL 并放入 DevTools Web UI,也可以仅使用长链接在浏览器中打开 DevTools。
  • \n
  • 打开 DevTools 网页顶部的“Logging”选项卡,恢复应用程序执行并观察日志。
  • \n
\n

仍然不确定以编程方式调试 Flutter 应用程序的正确性 # 日志页面文档。它提到

\n
\n

注意:您可以在 DevTools\xe2\x80\x99 Logging 视图或系统控制台中查看日志。本节介绍如何设置日志记录语句。

\n
\n

但它没有提到它在日志记录视图stderr.writeln()中可见,但在控制台输出中不可见。另外还不清楚为什么 Logging 视图在 Intellij Idea/Android studio 中不可见。developer.log()

\n