talker
talker copied to clipboard
intelliJ console log problem in ios
Describe the bug When debugging ios application the output to console always like this. Android is colored and looks usual.
To Reproduce Intellij 2022 and later debug the application in ios
Expected behavior Colored and formatted logs should be seeble.
Screenshots
Desktop (please complete the following information):
- OS: MacOS Sonoma
- Browser Chrome
Smartphone (please complete the following information):
- Device: iPhone 15
- OS: ios 17
- Browser Stock
The image is from flutter_dio_logger but it is excatly the same case with .info, .warning and error states.
Regarding #104, yes I initialize like this
import 'package:talker_flutter/talker_flutter.dart';
final talker = TalkerFlutter.init();
before using initialization method it was the same characters like <..> in #104 after init, its like this.
talker: ^4.0.0
talker_flutter: ^4.0.0
talker_dio_logger: ^4.0.0
Flutter: 3.16.9
Dart: 3.2.6
Flutter intellij Plugin: 77.2.2
Dart intellij plugin: 232.10286
Not necessarily an answer to your issue but under the hood talker uses log
for iOS and mac and debugPrint
for anything other then web, perhaps this is why it is not shown the way you expect in inteliJ.
So maybe pass a custom logger to your init function.
// 🎯 Dart imports:
import 'dart:developer';
// 🐦 Flutter imports:
import 'package:flutter/foundation.dart';
// 📦 Package imports:
import 'package:talker_flutter/talker_flutter.dart';
final talker = TalkerFlutter.init(
logger: TalkerLogger(
output: debugPrint, // or log
settings: TalkerLoggerSettings(),
),
);
@XanderD99 thx. But both solution gives the same result, suprisingly.
I have same problem. if you find solution please write his.
I am having the same problem. Also after initialising using TalkerFlutter.init()
same here
same here
Not necessarily an answer to your issue but under the hood talker uses
log
for iOS and mac anddebugPrint
for anything other then web, perhaps this is why it is not shown the way you expect in inteliJ.So maybe pass a custom logger to your init function.
// 🎯 Dart imports: import 'dart:developer'; // 🐦 Flutter imports: import 'package:flutter/foundation.dart'; // 📦 Package imports: import 'package:talker_flutter/talker_flutter.dart'; final talker = TalkerFlutter.init( logger: TalkerLogger( output: debugPrint, // or log settings: TalkerLoggerSettings(), ), );
It is not helps because TalkerFlutter
overwrites the output
setting.
The solution:
Simply do not use TalkerFlutter
! It doesn't do anything except that pipes output to log()
instead of debugPrint()
that actually causes the problem!
I think it was a solution for a problem in the past, but this factory went obsolete I think.
Not necessarily an answer to your issue but under the hood talker uses
log
for iOS and mac anddebugPrint
for anything other then web, perhaps this is why it is not shown the way you expect in inteliJ. So maybe pass a custom logger to your init function.// 🎯 Dart imports: import 'dart:developer'; // 🐦 Flutter imports: import 'package:flutter/foundation.dart'; // 📦 Package imports: import 'package:talker_flutter/talker_flutter.dart'; final talker = TalkerFlutter.init( logger: TalkerLogger( output: debugPrint, // or log settings: TalkerLoggerSettings(), ), );
It is not helps because
TalkerFlutter
overwrites theoutput
setting.The solution: Simply do not use
TalkerFlutter
! It doesn't do anything except that pipes output tolog()
instead ofdebugPrint()
that actually causes the problem! I think it was a solution for a problem in the past, but this factory went obsolete I think.
Unfortunately this doesn't work either Tested on Android Studio Jellyfish | 2023.3.1 Patch 1
Yes, that's I wrote.
Solution is simply omit TalkerFlutter.init()
:
// Default settings:
final talker = Talker();
// OR: add custom settings
final talker = Talker(
logger: TalkerLogger(
settings: TalkerLoggerSettings(),
),
);
Details: https://github.com/Frezyx/talker/issues/229
@westito thanks for the fast response!
The solution you suggest improves the line format a little but still leaves these artifacts \^[[38;5;4m
which I assume are related to console color codes
You sure! Sorry, my bad. I tried with macOS only. As you see, on macOS it is working (TalkerFlutter.init()
uses log()
instead of debugPrint()
). But yes, on iOS it is not working.
Also, the log()
call is not visible with run command.
However, on web console the colors are visible (both on iOS and macOS)
So, right now there is no solution I think. iOS escapes special control characters in log likely because security reasons. The intresting part is that log()
uses Dart VM Service to print logs so I would think it is not go through iOS filters. But it is possible both logging uses stdout. I don't know how it works under the hood. A possible solution can be completely skip stdout and use Dart VM Service communication channel to send logs.
@westito thanks again for looking into this! And you are right, it appears to be an old, internal Flutter issue flutter/#64491