Dart| Flutter: How to add logging to an application with configuration and examples

This post explains how to add logging into dart and flutter applications.

Logging is used to log different types of messages such as information, error, and debug messages, Helps developers to debug errors and issues.

Currently, there are two types of popular libraries in Dart

  • Dart logging
  • Dart logger

You can add these loggers in Dart and Flutter applications

We are going to use the logging🔗 library in dart applications.

How to use logging in Dart applications with examples?

First, add logging dependency in pubspec.yml

name: dartapp
description: >-
   dart example application.
version: 1.0.0

environment:
  sdk: '>=2.10.0 <3.0.0'
dependencies:
  logging: any
dev_dependencies:
    intl: any

Next, Install the dependency using the below command dart pub install to install dependency in dart flutter pub install to install dependency in a flutter

Once dependency is installed, follow the steps

  • import the logging package into your cod

    e

Then in your dart code, import the below package

import 'package:logging/logging.dart';

Next, First, initialize an object of the Logger class, and pass a unique string to it.

final log = Logger('LoggingExample');

logging does not print anything until you configured Levels and onRecord listen.

listen method should log different custom messages

LEVEL.INFO is a default logging that logs information messages, It does not log debug messages.

LEVEL.ALL: it prints all log messages

  Logger.root.level = Level.ALL; // defaults to Level.INFO
  Logger.root.onRecord.listen((record) {
    print('${record.level.name}: ${record.time}: ${record.message}');
  });

Next, log messages using different methods.

  log.info("log info method");

Let’s see different examples of enabling different LEVEL.

Dart logging LEVEL.ALL example

import 'package:logging/logging.dart';

final log = Logger('LoggingExample');

void main() {
  Logger.root.level = Level.ALL;
  Logger.root.onRecord.listen((record) {
    print('${record.level.name}: ${record.time}: ${record.message}');
  });

  // log message with different methods
  log.shout("log shout method");
  log.severe("log severe method");
  log.warning("log warning method");
  log.info("log info method");
  log.config("log config method");
  log.fine("log fine method");
  log.finer("log finer method");
  log.finest("log finest method");
}

Output: It logs all types of messages that contain different levels

SHOUT: 2022-07-03 09:51:00.894768: log shout method
SEVERE: 2022-07-03 09:51:00.894768: log severe method
WARNING: 2022-07-03 09:51:00.894768: log warning method
INFO: 2022-07-03 09:51:00.894768: log info method
CONFIG: 2022-07-03 09:51:00.904131: log config method
FINE: 2022-07-03 09:51:00.904131: log fine method
FINER: 2022-07-03 09:51:00.904131: log finer method
FINEST: 2022-07-03 09:51:00.904131: log finest method

next, Change the Logging level to OFF

  Logger.root.level = Level.OFF;

Output: It does not print any log messages.

next, Change the Logging level to INFO

  Logger.root.level = Level.INFO;

It prints information messages below. Output:

SHOUT: 2022-07-03 09:53:48.817704: log shout method
SEVERE: 2022-07-03 09:53:48.823688: log severe method
WARNING: 2022-07-03 09:53:48.823688: log warning method
INFO: 2022-07-03 09:53:48.824687: log info method

next, Change the Logging level to CONFIG

  Logger.root.level = Level.CONFIG;

Output:

SHOUT: 2022-07-03 09:54:31.165708: log shout method
SEVERE: 2022-07-03 09:54:31.174165: log severe method
WARNING: 2022-07-03 09:54:31.174165: log warning method
INFO: 2022-07-03 09:54:31.174165: log info method
CONFIG: 2022-07-03 09:54:31.174165: log config method

with the above different levels configured, It displays different log messages.

Dart logging levels

Currently, It supports the following Levels.

Level.OFF: Logging is disabled Level.SHOUT: log shout messages Level.SEVERE: log severe errors Level.WARNING: log warnings Level.INFO: log useful message Level.CONFIG: log configuration message Level.FINE: log success message with a FINE level Level.FINER: log success message with FINER level Level.FINEST: log success message with FINEST level