How to:

Dart includes a simple logging mechanism through the dart:developer library. For more sophisticated logging needs, programmers often turn to third-party libraries like logger and log4dart.

Using dart:developer

This is suitable for basic logging, especially during development:

import 'dart:developer';

void main() {
  log('This is a debug log message.');


This is a debug log message.

Using the logger package

For a more comprehensive solution, the logger package offers various levels of logging (e.g., info, warning, error) and can be formatted in a more readable manner.

First, add the logger dependency in your pubspec.yaml file:

  logger: ^1.0.0

Then, use it as follows:

import 'package:logger/logger.dart';

var logger = Logger();

void main() {
  logger.d("This is a debug message");
  logger.w("This is a warning message");
  logger.e("This is an error message");

Sample output might look like this, with each message type being formatted differently for easy identification:

💬 This is a debug message
⚠️ This is a warning message
❗️ This is an error message

Using the log4dart package

For applications requiring configuration-based logging (similar to Log4j), log4dart offers a familiar approach. It’s especially handy for large scale applications.

Ensure you include log4dart in your pubspec.yaml:

  log4dart: ^2.0.0

A simple usage example:

import 'package:log4dart/log4dart.dart';

void main() {
  final logger = LoggerFactory.getLogger("MyApp");
  logger.debug("Debugging MyApp");
  logger.info("Informational message");


DEBUG: Debugging MyApp
INFO: Informational message

Each of these methods provides a different level of flexibility and complexity, from simple debugging messages to comprehensive, configurable logging suited to the needs of complex applications.