flutter如何优雅地在控制台正确打印信息

1,531 阅读1分钟

最近发现logger不好使,那么自己搞一个。

dart自带的包 dart:developer下的log好像不错,原链接: logging

看了相关文章,导包,使用

// main.dart 
import 'dart:developer' as developer; 
// Blue text 
void logInfo(String msg) { 
    developer.log('\x1B[34m$msg\x1B[0m'); 
} 
// Green text 
void logSuccess(String msg) { 
    developer.log('\x1B[32m$msg\x1B[0m'); 
} 
// Yellow text 
void logWarning(String msg) { 
    developer.log('\x1B[33m$msg\x1B[0m'); 
} 
// Red text 
void logError(String msg) { 
    developer.log('\x1B[31m$msg\x1B[0m'); 
} 
void main() { 
    logInfo('Hello buddy'); 
    logSuccess('Welcome to KindaCode.com'); 
    logWarning('I am a bad man. Be careful'); 
    logError('Ops. We ran into some trouble'); 
}

看起来挺正经的

然而只能在vscode debug时候能看,as/idea不显示,颜色也被直接拆分了 image.png (不确定是不是是我的问题,如果是,请指出)

那么 有没有办法可以在as/idea也能输出有颜色的日志,以便区分呢?

下面是我想的一个办法

还是一样用developer的log 但是输出的时候加上前缀 INFO/DEBUG/WARNING/ERROR等

void logInfo(Object message) {
  developer.log('INFO ${message.toString()}', time: DateTime.now());
}

void logDebug(Object message) {
  developer.log('DEBUG ${message.toString()}', time: DateTime.now());
}

void logWarning(Object message) {
  developer.log('WARNING ${message.toString()}', time: DateTime.now());
}

void logError(Object message, {StackTrace? stackTrace}) {
  developer.log('ERROR ${message.toString()}',
      time: DateTime.now(), stackTrace: stackTrace);
}

然后as/idea安装插件: Grep console

image.png

🔗:github.com/krasa/GrepC…

怎么配置? 基本上你不用配置,默认表达式基本识别到输出的信息

image.png

详细的简单解析,原链接🔗blog.csdn.net/m0_47562022…

image.png

下面看看结果

1662091381268.jpg

嗯.....感觉总比白色好😅