Bonsai
Features
A tiny Dart logging package.
Based loosely on “Android style” debug logging and somewhat influenced by Square’s logcat
Uses the logging functionality from the dart:developer
package.
Getting started
Just import the package and call the init method somewhere, like at the start of your main()
:
import 'package:bonsai/bonsai.dart'; void main() { const debug = true; if (debug) { Log.init(); } //... }
Usage
Bonsai adds a static extension method onto Object
to make basic usage very simple:
class MyClass { void doSomething() { log("hello I'm doing something"); } }
Of course more custom usage is also available:
Log.d('Main', 'custom tags are also available as it sending custom data:', data: myObj); // there is also a specific method for errors: try { throw UnsupportedError('soemthing went wrong'); } catch (e, st) { Log.e('some error happened', e, st); }
In Flutter apps, the logging will be sent to usual app console output. However if you are using this for a Dart command line application or want output when running unit tests for Flutter apps, you’ll likely want to enable output to stderr
:
// pass true to enable output to stderr Log.init(true);
Example stdout/stderr commandline output looks like:
FINE: 2021-10-01 16:29:54.573106: [MyClass] hello I'm doing something
FINE: 2021-10-01 16:29:54.576928: [Main] custom tags are also available
SEVERE: 2021-10-01 16:29:54.577526: some error happened
FormatException: something went very wrong
#0 main (file:///home/maks/work/bonsai_dart/example/bonsai_example.dart:16:5)
#1 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#2 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
The name?
Following in the great heritage of naming Logging packages in Android: logging, trees, tiny logging package… 🙂
Contribute to logging package on GitHub
Provides the list of the opensource Flutter apps collection with GitHub repository.