code_scout_talker 1.0.0
code_scout_talker: ^1.0.0 copied to clipboard
Talker observer for Code Scout. Forwards everything Talker logs to your Code Scout dashboard, without changing a line of your logging code.
code_scout_talker #
Sends everything Talker logs to your Code Scout dashboard as well.
Part of the Code Scout ecosystem.
Why #
Talker is good at showing you what happened on the phone in your hand. It is not built to tell you what happened on a tester's phone yesterday, or on the one device out of two hundred where checkout keeps failing, because nothing it records leaves the device.
This adds a second reader. Your logging code does not change, the console output
does not change, TalkerScreen keeps working, and every talker_* logger you
already use keeps working. The same logs simply also arrive somewhere you can
search across every device, filter by session, and share as a link.
Getting started #
flutter pub add code_scout_talker
This depends on code_scout and
talker.
Usage #
Pass the observer when you create your Talker:
import 'package:code_scout_talker/code_scout_talker.dart';
final talker = Talker(observer: const CodeScoutTalkerObserver());
Then set Code Scout up as you normally would:
await CodeScout.instance.init(
configuration: CodeScoutConfiguration(
projectCredentials: ProjectCredentials(
link: 'https://your-dashboard.example.com/',
projectId: '...',
secretKey: '...',
),
),
);
That is the whole setup. Everything through talker.info(), talker.error(),
talker.handle() and the companion loggers now reaches the dashboard too.
Tagging forwarded logs #
If your app calls both Talker and Code Scout directly, you can tag everything that came through Talker so the two are easy to tell apart:
Talker(observer: const CodeScoutTalkerObserver(tags: {'talker'}))
How things map #
| Talker | Code Scout |
|---|---|
critical |
fatal |
error |
error |
warning |
warning |
info |
info |
debug |
debug |
verbose |
verbose |
| no level set | info, or error for a handled error |
Talker's log key becomes a tag, which is where this earns its keep: the
companion loggers set keys like http-request and bloc-event, so the
dashboard's tag filters are useful the moment you connect. Talker's title is
display text rather than an identifier, so it goes into the log's metadata as
talker_title instead of becoming a messy tag.
An error logged with no message uses the error itself as the message, because
talker.handle(e) is a normal thing to write and a blank row helps nobody.
Before Code Scout is set up #
Nothing breaks. Every callback does its work inside a try/catch, so a Code Scout
that is not yet initialised, has no credentials, or fails for any other reason
cannot interfere with your own talker.info() call. A logging tool that can
throw is a logging tool that takes down the code it was meant to watch.
License #
MIT - see LICENSE for details.