Dart服务端使用logger包,命令行运行及编译后无法打印日志的问题求助
Dart服务端使用logger包,命令行运行及编译后无法打印日志的问题求助
各位好,我现在用Dart开发服务端脚本,用到了logger包。在IDE里运行项目时,日志打印完全正常,但如果通过命令行执行:
dart my_server.dart
控制台完全没有日志输出。我尝试把脚本编译成可执行文件后运行,结果还是一样——没有任何日志内容打印出来。
我曾误以为print方法不会被包含在可执行文件中,于是把自定义的ConsoleOutput类从:
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其实是会被包含在可执行文件里的,但不管用哪种实现方式,命令行环境下始终没有日志输出。
我的logger配置如下:
var logger = Logger( printer: PrettyPrinter( methodCount: 2, // 要显示的方法调用层数 errorMethodCount: 8, // 提供栈追踪时显示的方法调用层数 lineLength: 120, // 输出内容的宽度 colors: true, // 彩色日志信息 printEmojis: false, // 不为每条日志打印表情 printTime: true // 每条日志是否包含时间戳 ), output: ConsoleOutput(), );
同时在main函数里设置了日志级别:
void main() { Logger.level = Level.trace; // 其他业务代码... }
再强调一次,在IDE内运行时所有日志都能正常输出,可命令行运行和编译后就毫无动静,实在搞不清楚哪里出了问题,有没有大佬能帮我看看我漏掉了什么?
提前感谢各位的帮助!
备注:内容来源于stack exchange,提问作者Claudio Grasso
相关产品推荐
相关产品推荐

