Запис до стандартного помилки

Dart:
Запис до стандартного помилки

Як зробити:

У Dart запис до stderr є простим завдяки об’єкту stderr, доступному в dart:io. Ось базовий приклад:

import 'dart:io';

void main() {
  stderr.writeln('Це повідомлення про помилку.');
}

Вивід при запуску:

Це повідомлення про помилку.

Це повідомлення надсилається до потоку stderr, який зазвичай відображається в консолі або терміналі.

Для демонстрації більшої складності, наприклад, журналювання винятку, багатий набір функцій Dart дозволяє здійснити точне та ефективне оброблення помилок:

import 'dart:io';

void riskyOperation() {
  try {
    // Симулюємо операцію, яка може викликати виняток
    throw Exception('Щось пішло не так!');
  } catch (e) {
    stderr.writeln('Помилка: $e');
  }
}

void main() {
  riskyOperation();
}

Вивід при запуску:

Помилка: Exception: Щось пішло не так!

Цей патерн особливо корисний для додатків, яким потрібно розділити звичайні журнали від журналів помилок, що полегшує моніторинг та відлагодження додатків.

Хоча стандартна бібліотека Dart є досить всеохоплюючою, багатьом програмам не потрібні сторонні бібліотеки для запису в stderr. Однак, якщо ваш додаток потребує більш складних можливостей для журналювання (наприклад, у файли, через мережу, форматування), пакет logging є популярним вибором. Ось швидкий приклад використання logging для помилок:

import 'dart:io';
import 'package:logging/logging.dart';

final logger = Logger('MyAppLogger');

void setupLogging() {
  logger.onRecord.listen((record) {
    if (record.level >= Level.SEVERE) {
      stderr.writeln('${record.level.name}: ${record.time}: ${record.message}');
    }
  });
}

void main() {
  setupLogging();
  logger.severe('Серйозна помилка: Сталася дуже погана подія.');
}

Вивід при запуску:

SEVERE: 2023-04-01 00:00:00.000: Серйозна помилка: Сталася дуже погана подія.

Цей метод пропонує вищий ступінь налаштування та контролю над тим, що журналюється як помилка і як це форматується, що може бути дуже корисним у більших, складніших додатках.