Логирование, модули debug и winston

Поделиться
HTML-код
  • Опубликовано: 2 окт 2024
  • learn.javascrip...
  • НаукаНаука

Комментарии • 30

  • @SergeyTish
    @SergeyTish 8 лет назад +1

    У меня на Win7 все хорошо сработало...хотя я малость потупил)) Забыл имена файлов поменять (у меня свои имена файлов и переменных, ну и чутка структурирую иначе, чтоб не совсем под копирку, а то не интересно).
    Спасибо Илье, за клевый скринкаст! Мне очень нравится, что все очень просто и понятно, хоть я и совсем новичок...

  • @runfm
    @runfm 6 лет назад +7

    TypeError: winston.Logger is not a constructor
    Кто в 2018 будет смотреть - теперь надо return winston.createLogger({transports: transports});

    • @oz5277
      @oz5277 6 лет назад

      ты красавчик! спасибо!

    • @МаксимЮревич-ф6я
      @МаксимЮревич-ф6я 4 года назад

      А лучше создавать лог файлы для каждого модуля с помощью данной команды. Поэтому в 2020 написание скрипта для винстона для логирования отдельных модулей не актуально.

  • @llIIllIIlllIllIIIlII
    @llIIllIIlllIllIIIlII 8 лет назад +6

    >npm i debug, находясь в директории с проектом. Илья пропустил этот момент, так как он очевидный

  • @Gorr1995
    @Gorr1995 8 лет назад +5

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

  • @AlexandrSpirit
    @AlexandrSpirit 5 лет назад +1

    Для меня логирование оказалось сложной темой. Надеюсь с опытом будет проще

  • @dennyaap
    @dennyaap 7 месяцев назад

    У меня winston ассоциируется с сигаретами, как бросать курить тому, кто его часто использует?🤣🤣🤣

  • @Moldovich
    @Moldovich 6 лет назад

    NODE_DEBUG for windows :
    set NODE_DEBUG=http,net

  • @АндрейУсков-х1т
    @АндрейУсков-х1т 7 лет назад

    интересный скринкаст, хотя на сегодняшний день кое-что изменилось: 1) на Винде при логировании с помощью debug или NODE_DEBUG в консоли параметр set уже не нужно указывать, как и в Unix системе вызываем DEBUG=server node server.js, NODE_DEBUG="http net" node server.js ; 2)при отработке winston - в консоли WS выводится всё по порядку, сначала log.info, потом log.error, так как прописано в коде. Илье ещё раз спасибо!

  • @YangaBumba
    @YangaBumba 8 лет назад

    Зачем winston debug, если сообщения этого уровня по умолчанию не выводятся? Как правильно использовать debug?

  • @Constantine..
    @Constantine.. 8 лет назад

    Уже голову сломал почему, когда на 3мин25сек мы перезагружаем браузер у нас срабатывает лог "error"? У нас ведь в файле request.js, if отлавливает выполнение, закрывает и вызывает return! Соответственно log.error() не должно выполниться!

    • @Constantine..
      @Constantine.. 8 лет назад

      Уточнение, у меня error и не срабатывает, почему у Ильи срабатывает?

  • @mr_DorianGray
    @mr_DorianGray 8 лет назад

    Подскажите, получил такую ошибку
    Error: Cannot find module 'debug'
    модуль debug нужно доустановить ?

    • @filippgaponenko3331
      @filippgaponenko3331 8 лет назад

      +Роман и Наталья Ковальские
      При первом запуске была аналогичная проблема - исчезла после перезапуска сервера.
      (доустонавливать модуль не нужно, он нативный).

    • @SergeyTish
      @SergeyTish 8 лет назад

      +Роман и Наталья Ковальские при установке модуля (...>npm install debug) нужно находиться в корневой папке проекта. Вероятно Вы просто поставили этот модуль куда-то совсем в другую директорию, поэтому он его и не находит.

    • @mr_DorianGray
      @mr_DorianGray 8 лет назад +1

      нужно доустанавливать

  • @alexpyriel8634
    @alexpyriel8634 7 лет назад

    Если мы заранее знаем в каком модуле какой логгер будем использовать , зачем передавать в обертку (module) и находить нужный через вложенные функции и деревья if-else? Можно ведь в обертке сразу экспортировать несколько логгеров.
    var serverLogger = new (winston.Logger)({
    transports: [
    new winston.transports.Console({
    timestamp: true,
    label: 'server',
    colorize: true,
    level: process.env.NODE_ENV === 'development' ? 'info' : 'error'
    })
    ]
    });
    var another Logger = new (winston.Logger)({...});
    module.exports.serverLogger = serverLogger;
    module.exports.anotherLogger = another Logger;
    Таким образом мы сможем не только подключить сконфигурированный должным образом логгер в нужном модуле, но и при желании несколько разных
    var log = require('./log').serverLogger;
    var log1 = require('./log').anotherLogger;
    Например один логгирует только ошибки и только в файл, второй пишет в консоль только на заданном окружении.

    • @alexpyriel8634
      @alexpyriel8634 7 лет назад

      ну дык вся логика создания и настройки и у меня инкапсулирована в модуле обертки, просто я сразу экспортирую настроенные логгеры и подключаю их где нужно соотвественно без передачи module в обертку

    • @alexpyriel8634
      @alexpyriel8634 7 лет назад

      Не понимаю о чем речь.
      У Ильи все транспорты описаны в одном файле log.js - У меня все транспорты описаны в одном файле log.js
      У Ильи нужен транспорт в консоль - передаем в обертку модуль, отсекаем путь, проверяем регекспом и через if-else возвращаем наконец транспорт в консоль
      У меня нужен транспорт в консоль - я беру и подключаю транспорт в консоль (т.к. он среди прочих в обертке просто описан и экспортируется отдельно в этом же файле без всяких if-else)
      Если нужно подключить/отключить какой то тип транспорта - иду в свой файл log.js и делаю - все в одном диспетчере логгеров
      Но если мне понадобится этот же транспорт в консоль в другом файле отличном от request.js я просто возьму и подключу его там, и не придется дописывать еще один if-else или if (path.match || path.match) в проверку

    • @alexpyriel8634
      @alexpyriel8634 7 лет назад

      Примерный код аналогичного модуля log.js
      var winston = require('winston');
      winston.configure({
      levels: {
      ...
      },
      colors: {
      ...
      }
      });
      var errorLogger = new (winston.Logger)({
      transports: [ new winston.transports.File({ ... }) ]
      });
      var serverLogger = new (winston.Logger)({
      transports: [ new winston.transports.Console({ ... }) ]
      });
      var devLogger = new (winston.Logger)({
      transports: [ new winston.transports.Console({
      ...
      silent: process.env.NODE_ENV === 'development' ? false : true
      })
      ]
      });
      module.exports.errorLogger = errorLogger;
      module.exports.serverLogger = serverLogger;
      module.exports.devLogger = devLogger;

    • @alexpyriel8634
      @alexpyriel8634 7 лет назад

      Возможность для каждого модуля создать свой специфично настроенный логгер можно реализовать и моим подходом.
      Код подключения обертки во всех модулях можно использовать одинаковый и у меня при желании (просто подключив обертку целиком как у Ильи, а не нужный конкретный экспорт, а уже к конкретному логгеру обращаться при вызове обертки)
      var log = require('./log');
      log.serverLogger('text);
      log.devLogger(' text ' );
      А в целом согласен - выбор подхода зависит от специфики поставленной задачи.

  • @NihilFrost
    @NihilFrost 10 лет назад

    ""NODE_DEBUG" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом."
    Что делать? У меня винда.

    • @dmytro_dd
      @dmytro_dd 9 лет назад

      >SET NODE_DEBUG "http net"
      >node server.js
      [ если вдруг вы слушали невнимательно ]

    • @Sahaviev
      @Sahaviev 9 лет назад +1

      всем, кто столкнулся с такой же проблемой советую юзать web-storm или php-storm.
      там проблем не будет.
      либо как уже написал комментатор выше сначала пишем:
      1 команда: set NODE_DEBUG "необходимые уровни логирования ..."
      2 команда: node server.js

    • @СтаниславРудаков-л1п
      @СтаниславРудаков-л1п 6 лет назад +1

      У меня сработало (для Node 9.3) через
      set NODE_DEBUG=http,net
      node server.js
      Может кому будет полезно.

    • @0leksiiX
      @0leksiiX 6 лет назад

      set DEBUG
      set DEBUG=server
      node server.js

    • @0leksiiX
      @0leksiiX 6 лет назад

      и только в "нативной" cmd ОС, например в cmd Atom такое уже не проходит