在 Dart 程序中,无论是作为“dart my_server.dart”运行还是运行编译版本时,记录器包都不会打印到控制台

问题描述 投票:0回答:1

我正在 Dart 中编写服务器端脚本并使用(logger package)。当我在 IDE 中运行应用程序时,日志记录就像一个魅力,但如果我从命令行运行脚本:

dart my_server.dart

控制台上没有打印任何内容。我尝试编译服务器,结果是相同的:没有打印任何内容。

我尝试替换默认的打印类:

class ConsoleOutput extends LogOutput {
  @override
  void output(OutputEvent event) {
    for (var line in event. Lines) {
      print(line);
    }
  }
}

class ConsoleOutput extends LogOutput {
  @override
  void output(OutputEvent event) {
    for (var line in event.lines) {
      stdout.write(line);
    }
  }
}

因为我的理解是“打印”不包含在可执行文件中,但也没有打印任何内容。编辑:错误信息。 print 包含在可执行文件中。

我的设置是:

var logger = Logger(
  printer: PrettyPrinter(
      methodCount: 2,
      // number of method calls to be displayed
      errorMethodCount: 8,
      // number of method calls if stacktrace is provided
      lineLength: 120,
      // width of the output
      colors: true,
      // Colorful log messages
      printEmojis: false,
      // Print an emoji for each log message
      printTime: true // Should each log print contain a timestamp
  ),
  output: ConsoleOutput(),
);

void main() {
  Logger.level = Level.trace;

再一次,在 IDE 中一切都按预期工作。 我错过了什么?

提前致谢。 克劳迪奥

dart logging console
1个回答
0
投票

在深入研究源代码之后,我找到了一个解决方案:使用 PoductionFilter() 作为过滤器可以解决问题。 然后,在第三次阅读文档后,我注意到忽略了最简单的解决方案:只需使用过滤器:

class MyFilter extends LogFilter {
  @override
  bool shouldLog(LogEvent event) {
    return true;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.