bytedance/flutter_ume

flutter_ume_kit_console适配第三方日志插件logger问题

Closed this issue · 3 comments

使用第三方日志插件代码如下:
`
import 'package:logger/logger.dart';

// 统一日志打印配置
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: true, // Print an emoji for each log message
printTime: true // Should each log print contain a timestamp
),
);

`

发现flutter_ume无法打印出日志

hai046 commented

我当时也遇到了, 后来我看了一下,需要使用/使用debugPrint 代替print

class XXXXConsoleOutput extends LogOutput {
  @override
  void output(OutputEvent event) {
    final msg = event.lines.join('\n');
    //使用debugPrint 代替print
    debugPrint(msg);
   
  }
talisk commented

暂无计划适配。欢迎提交 Pull Request 来支持更多日志工具

CCXXXI commented

使用 debugPrint 代替print

也可以用

ConsoleManager.streamController!.add("message");

这样相比 debugPrint 有两个好处:

  • 如果已经用了其他方式把日志打印到终端,可以避免重复打印
  • 在非 debug 模式下也能使用

另外,根据

static StreamController? get streamController => _getLogStreamController();

static StreamController? _getLogStreamController() {
if (_logStreamController == null) {
_logStreamController = StreamController.broadcast();
var transformer =
StreamTransformer<dynamic, Tuple2<DateTime, String>>.fromHandlers(
handleData: (str, sink) {
final now = DateTime.now();
if (str is String) {
sink.add(Tuple2(now, str));
} else {
sink.add(Tuple2(now, str.toString()));
}
});
_logStreamController!.stream.transform(transformer).listen((value) {
if (_logData.length < maxLine) {
_logData.addFirst(value);
} else {
_logData.removeLast();
}
});
}
return _logStreamController;
}

可以知道尽管接口被设计为 StreamController?,但拿到的 ConsoleManager.streamController 不会是 null