Groveman
Logging for Dart/Flutter applications.
It's very similar to Android logging library called Timber and also with the package for Dart/Flutter called Fimber that implements the same concept of the tree and planting logging tree.
Behavior is added through Tree
instances. You can install an instance by calling Groveman.plantTree. Installation of Trees should be done as early as possible, e.g, in the function main
.
There are no Tree implementations installed by default because, second Timber
, every time you log in production, a puppy dies.
There is a tree
for the debug mode called DebugTree
, it's totally configurable.
The logging is formed by the level, tag, message, extra, error and stack trace.
Levels
For define severity of a logging. The level is set to one of five values, which are, in order of severity:
- fatal
- error
- warning
- info
- debug
Usage
Add it in your pubspec.yaml
:
dependencies:
groveman:
Import it where you want to use it e.g, in your main file.
import 'package:groveman/groveman.dart';
Initialize logging tree on start of your application.
void main(){
Groveman.plantTree(DebugTree());
//log
Groveman.debug();
Groveman.info('info', tag: 'info');
Groveman.warning('error', tag: 'info', extra: <String, Object>{
'name': 'Jungle',
'trees': 50,
},
);
Groveman.error('info', tag: 'info', error: Error());
Groveman.fatal('info', tag: 'info', stackTrace: StackTrace.current);
}
You can plant a tree depending on the mode, e.g debug and production.
void main(){
if (kReleaseMode) {
Groveman.plantTree(CrashlyticsTree());
} else {
Groveman.plantTree(DebugTree());
}
}
Configure to capture exception in Zone and in current Isolate
void main(){
Groveman.captureErrorInZone(() => runApp(MyApp()));
Groveman.captureErrorInCurrentIsolate();
}
Look at the example app to see Groveman
in action.
Debug Tree
Uses the dart:developer log() function to show logging.
It's only shown in debug mode, so there's no problem keeping
DebugTree
in production.
Format of the output
[Log Level] [tag]: message
extra
Error
StackTrace
The extra
will be showed formatted as JSON
.
If the tag is not provided, the implementation will automatically figure out from which file and line it's being called and use that file name and line as its tag. You can set to not show the tag.
Groveman.plantTree(DebugTree(showTag: false));
The log level text can be replaced for emoji.
Groveman.plantTree(DebugTree(showEmoji: true));
Sets method count, used when there is the stack trace.
// Log Level - debug, info, warning
Groveman.plantTree(DebugTree(methodCount: 2));
// Log Level - error, fatal
Groveman.plantTree(DebugTree(errorMethodCount: 2));
Still is possible to colorize your logs.
Groveman.plantTree(DebugTree(showColor: true));
There is a problem with the show of the stack trace in flutter web, you can see here https://github.com/flutter/flutter/issues/79176
Others officially supported Trees
You can create your, just extend the Tree
class.
Take a look at the DebugTree
code to know more.
📝 Maintainers
🤝 Support
You liked this package? Then give it a ⭐️. If you want to help then:
- Fork this repository
- Send a Pull Request with new features
- Share this package
- Create issues if you find a bug or want to suggest a new extension
Pull Request title follows Conventional Commits. The scope available is groveman
.
📝 License
Copyright © 2022 Kauê Martins.
This project is MIT licensed.