Перейти к содержанию

logger

Параметр logger задаёт пользовательское логирование событий React Compiler во время компиляции.

1
2
3
4
5
6
7
{
  logger: {
    logEvent(filename, event) {
      console.log(`[Compiler] ${event.kind}: ${filename}`);
    }
  }
}

Описание

logger

Настраивает пользовательское логирование, чтобы отслеживать поведение компилятора и отлаживать проблемы.

Тип

1
2
3
{
  logEvent: (filename: string | null, event: LoggerEvent) => void;
} | null

Значение по умолчанию

null

Методы

  • logEvent: вызывается для каждого события компилятора и получает имя файла и сведения о событии

Типы событий

  • CompileSuccess: функция успешно скомпилирована
  • CompileError: функция пропущена из-за ошибок
  • CompileDiagnostic: нефатальная диагностическая информация
  • CompileSkip: функция пропущена по другим причинам
  • PipelineError: неожиданная ошибка компиляции
  • Timing: сведения о времени выполнения

Предупреждения

  • Структура событий может меняться между версиями
  • Большие кодовые базы порождают много записей в журнале

Использование

Базовое логирование

Отслеживайте успешную компиляцию и сбои:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  logger: {
    logEvent(filename, event) {
      switch (event.kind) {
        case 'CompileSuccess': {
          console.log(`✅ Compiled: ${filename}`);
          break;
        }
        case 'CompileError': {
          console.log(`❌ Skipped: ${filename}`);
          break;
        }
        default: {}
      }
    }
  }
}

Подробное логирование ошибок

Получайте конкретные сведения о сбоях компиляции:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  logger: {
    logEvent(filename, event) {
      if (event.kind === 'CompileError') {
        console.error(`\nCompilation failed: ${filename}`);
        console.error(`Reason: ${event.detail.reason}`);

        if (event.detail.description) {
          console.error(`Details: ${event.detail.description}`);
        }

        if (event.detail.loc) {
          const { line, column } = event.detail.loc.start;
          console.error(`Location: Line ${line}, Column ${column}`);
        }

        if (event.detail.suggestions) {
          console.error('Suggestions:', event.detail.suggestions);
        }
      }
    }
  }
}

Источник — https://react.dev/reference/react-compiler/logger

Комментарии