logging_appenders

Creator: coderz1093

Last updated:

Add to Cart

Description:

logging appenders

logging_appenders #


Native dart package for logging appenders usable with the logging package.

It currently includes appenders for:

Local Logging

print() PrintAppender
Rolling File Appender. RotatingFileAppender


Remote Logging

logz.io
loki.
gelf/Graylog



Performance of Remote Logging Appenders #
I am not sure if it is wise to use this in production, but it's great during beta testing with
a handful of users so you have all logs available.
It tries to stay reasonable performant by batching log entries and sending them off only every few
seconds. If network is down it will retry later. (with an ever increasing interval).
Getting Started #
After installing package logging and logging_appenders:
import 'package:logging/logging.dart';
import 'package:logging_appenders/logging_appenders.dart';

final _logger = Logger('main');

void main() {
PrintAppender.setupLogging();

// The above code is the same as:
// Logger.root.level = Level.ALL;
// PrintAppender()..attachToLogger(Logger.root);

_logger.fine('Lorem ipsum');
}
copied to clipboard
Outputs:
$ dart main.dart
2019-08-19 15:36:03.827563 FINE main - Lorem ipsum
copied to clipboard
Support for Exception chaining #
To chain exception you can use the extension method on Exception:
causedBy().
int test() {
try {
int.parse('a');
} catch (e, stackTrace) {
throw Exception('unable to parse').causedBy(e, stackTrace);
}
}
int main() {
try {
test();
} catch (e, stackTrace) {
logger.severe('catched Exception', e, stackTrace);
}
}
copied to clipboard
Color Formatter #
PrintAppender(formatter: const ColorFormatter())
..attachToLogger(Logger.root);
copied to clipboard
Produces:

Logging to stderr #
When using dart:io (ie. command line apps) it is possible to
define which log levels should go to stderr instead of stdout:
PrintAppender.setupLogging(stderrLevel: Level.SEVERE);
copied to clipboard
Remote Appenders #
Appender for logz.io #
final _logzIoApiSender = LogzIoApiAppender(
// you can find your API key and the required URL from
// the logz.io dashboard: https://app-eu.logz.io/#/dashboard/settings/general
apiToken: 'MY API KEY',
url: 'https://listener-eu.logz.io:8071/',
labels: {'app': 'MyApp', 'os': Platform.operatingSystem},
);
_logzIoApiSender.attachToLogger(Logger.root);


// ...
If you know that you no longer need the appender. it's good to dispose it:
_logzIoApiSender.dispose();
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.