我正在 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 中一切都按预期工作。 我错过了什么?
提前致谢。 克劳迪奥
在深入研究源代码之后,我找到了一个解决方案:使用 PoductionFilter() 作为过滤器可以解决问题。 然后,在第三次阅读文档后,我注意到忽略了最简单的解决方案:只需使用过滤器:
class MyFilter extends LogFilter {
@override
bool shouldLog(LogEvent event) {
return true;
}
}