Иерархическое ведение журнала с помощью console.info

Это мой первый проект React.js, и я добавил ведение журнала через отладку npm после этого руководство.

Моя цель — иметь удобочитаемый журнал всего, что делает программа, чтобы, когда я сталкиваюсь с ошибкой, ее можно было быстро диагностировать. Приложение имеет много древовидной логики, которая определяется содержимым в CMS (логика также находится в CMS), поэтому отладка должна быть понятной по мере изменения и усложнения содержимого.

Моя проблема в том, что после регистрации все становится слишком плоским. Трудно понять, когда выполнены большие задачи (и какие мелкие задачи необходимо выполнить, чтобы выполнить большую задачу). Мой журнал сейчас выглядит так:

Мой вывод журнала прямо сейчас.

Есть ли другая система ведения журнала, которую я должен использовать? Или есть какой-то инструмент DevOps или Analytics, который автоматически обеспечит лучшую организацию моих журналов в зависимости от того, являются ли они вложенными функциями или нет?

Заранее спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
198
1

Ответы 1

Я смог решить эту проблему, используя console.group и console.groupEnd(); для запуска и завершения групп в консоли. Я остановился на учебнике здесь.

Теперь у меня есть этот компонент:

const COLOURS = {
  trace: '#aaa',
  info: 'blue',
  warn: 'pink',
  error: 'red'
};

class Log {
  generateMessage(level, message, source, group) {
    var textColor = COLOURS[level];

    if (!group){
      if (typeof message === "object"){
        console.info("This is an object")
      } else {
        console.info("%c"+source+"  ||  %c"+message, "color:#000;", "color:"+textColor+";")
      }

    } else if (group === "start") {
      console.group("%c"+source+"  ||  %c"+message, "color:#000;", "color:"+textColor+";")
    } else if (group === "end"){
      console.groupEnd();
    }

  }

  trace(message, source, group) {
    return this.generateMessage('trace', message, source, group);
  }

  info(message, source, group) {
    return this.generateMessage('info', message, source, group);
  }

  warn(message, source, group) {
    return this.generateMessage('warn', message, source, group);
  }

  error(message, source, group) {
    return this.generateMessage('error', message, source, group);
  }
}

export default new Log();

а затем, если я хочу начать новую группировку журнала, я могу использовать (например):

Log.trace("Lesson data successful retrieved from Contentful.", "Lesson.js", "start")

и если я хочу закончить группу, я могу использовать:

Log.trace(null,null,"end")

В результате моя консоль теперь выглядит так: моя консоль теперь с сгруппированными сообщениями

Другие вопросы по теме