logger top-level property

Logger get logger

Fetches the logger instance.

Implementation

Logger get logger {
  if (_logger != null) {
    return _logger!;
  }

  hierarchicalLoggingEnabled = true;
  _logger = Logger('DSA');

  _logger?.onRecord.listen((record) {
    var lines = record.message.split('\n');
    var inlineErrors = _getLogSetting(record, 'dsa.logger.inline_errors', true);

    var enableSequenceNumbers = _getLogSetting(
      record,
      'dsa.logger.sequence',
      false,
    );

    if (inlineErrors) {
      if (record.error != null) {
        lines.addAll(record.error.toString().split('\n'));
      }

      if (record.stackTrace != null) {
        lines.addAll(
          record.stackTrace
              .toString()
              .split('\n')
              .where((x) => x.isNotEmpty)
              .toList(),
        );
      }
    }

    String? rname = record.loggerName;

    if (record.zone?['dsa.logger.name'] is String) {
      rname = record.zone?['dsa.logger.name'];
    }

    var showTimestamps = _getLogSetting(
      record,
      'dsa.logger.show_timestamps',
      false,
    );

    if (!_getLogSetting(record, 'dsa.logger.show_name', true)) {
      rname = null;
    }

    for (var line in lines) {
      var msg = '';

      if (enableSequenceNumbers) {
        msg += '[${record.sequenceNumber}]';
      }

      if (showTimestamps) {
        msg += '[${record.time}]';
      }

      msg += '[${record.level.name}]';

      if (rname != null) {
        msg += '[${rname}]';
      }

      msg += ' ';
      msg += line;

      if (_getLogSetting(record, 'dsa.logger.print', true)) {
        print(msg);
      }
    }

    if (!inlineErrors) {
      if (record.error != null) {
        print(record.error);
      }

      if (record.stackTrace != null) {
        print(record.stackTrace);
      }
    }
  });

  UpdateLogLevel(
    const String.fromEnvironment(
      'dsa.logger.default_level',
      defaultValue: 'INFO',
    ),
  );

  return _logger!;
}