9 Node.js Logger библиотеки, които можете да опитате за по-добро регистриране

Затруднявате ли се с отстраняването на грешки във вашия код? Търсите ли някакви решения за регистриране, които могат да улеснят отстраняването на грешки? Прочетете, за да научите повече.

Разработката на софтуер преминава през няколко фази: събиране на изисквания, анализ, кодиране, тестване и поддръжка. От всички тези фази фазата на кодиране/разработка изисква много време и усилия. Софтуерните инженери се занимават със синтактични грешки, логически грешки и грешки по време на изпълнение. Синтактичните грешки се идентифицират по време на компилиране и възникват поради това, че кодът не спазва правилата на езика за програмиране.

От друга страна, логическите грешки и грешките по време на изпълнение не могат да бъдат идентифицирани от интегрираната среда за разработка (IDE) и често са трудни за отстраняване на грешки и коригиране. Разрешаването на грешки е процес, който отнема време и изисква много отстраняване на грешки.

Отстраняването на грешки е процес, при който човек се опитва да разбере защо написаният код не работи според очакванията. Лесно е да разрешим проблема, когато знаем грешката и точните редове в кода, където се появява. Следователно регистрирането е много полезно за отстраняване на грешки в кода.

Какво е регистриране?

Регистрирането е техника, при която съобщенията се улавят по време на изпълнение на програма. Човек трябва да регистрира само онези съобщения, които могат да му помогнат при отстраняването на грешки. Така че да знаете кога да добавите лог отчети към кода е изключително важно. Също така, разграничаването на отчетите в журнала е също толкова важно. Има различни нива в регистрирането, като информация, предупреждение, грешка, отстраняване на грешки и многословно. Изявленията за грешки и предупреждения се използват за обработка на изключения.

Данни, които се връщат от функции, резултати след манипулиране на масив, данни, извлечени от API и т.н., са някои примери за данни, които могат да бъдат регистрирани с помощта на информационни изрази. Регистрационните файлове за отстраняване на грешки и подробни регистрационни файлове се използват за предоставяне на подробно описание на грешките.

Регистрационният файл за отстраняване на грешки дава информация за трасирането на стека, входно-изходните параметри и т.н. „Подробен“ не е толкова подробен като регистрационния файл за „отстраняване на грешки“, но дава списък на всички събития, които са се случили. Регистрационните файлове се записват в конзолата, файловете и изходния поток. Инструментите за управление на регистрационни файлове могат да се използват за структурирано и форматирано регистриране.

Регистриране на Node.js

Nodejs е среда за изпълнение на javascript. Приложенията Node.js са асинхронни и неблокиращи и се използват в системи с интензивно използване на данни и системи в реално време. Най-добрият начин да научите повече за Node.js е да прегледате уроците за Node.js и неговата документация. Регистрирането е необходимо за подобрена производителност, отстраняване на неизправности и проследяване на грешки. Регистрирането в Node.js може да се извърши с помощта на вградената функция console.log. Освен това функцията за отстраняване на грешки е свързана с множество пакети и може да се използва ефективно.

Мидълуерът се използва за управление на заявки и отговори. Мидълуерът може да бъде приложение или друга Javascript рамка. Влизането в междинния софтуер може да се извърши чрез приложения и рутери. Всеки регистратор на Node.js трябва да използва командата npm или yarn install, за да инсталира регистраторите.

Npm означава „Node Package Manager“, а YARN означава „Yet Another Resource Negotiator“. Yarn обаче е предпочитан пред npm, тъй като е по-бърз и инсталира пакети паралелно.

Някои от най-добрите регистратори на Node.js са изброени по-долу:

Пино

Pino е библиотека, която е един от най-добрите регистратори за Node.js приложения. Той е с отворен код, изключително бърз и записва отчетите в лесен за четене JSON формат. Някои от нивата на регистрационния файл на Pino са – съобщения за отстраняване на грешки, предупреждения, грешки и информационни съобщения. Екземпляр на Pino logger може да бъде импортиран в проекта и операторите console.log трябва да бъдат заменени с оператори logger.info.

  Защо Firefox не работи?

Използвайте следната команда, за да инсталирате Pino:

$ npm install pino   

Генерираните регистрационни файлове са сложни и във формат JSON, като подчертават номера на реда на регистрационния файл, типа на регистрационния файл, времето, когато е регистриран и т.н. Pino причинява минимално служебно регистриране в приложение и е изключително гъвкав при обработка на регистрационни файлове.

Pino може да се интегрира с уеб рамки като Hapi, Restify, Express и др. Регистрационните файлове, генерирани от Pino, също могат да се съхраняват във файлове. Той използва работни нишки за работа и е съвместим с TypeScript.

Уинстън

Winston поддържа регистриране за различни уеб рамки с основния си фокус върху гъвкавостта и разширяемостта. Той поддържа множество видове транспорт и може да съхранява регистрационни файлове в различни файлови местоположения. Транспортите са места, където се съхраняват регистрационните съобщения.

Заедно с някои вградени транспорти като Http, Console, File и Stream, той поддържа други транспорти като Cloud watch и MongoDB. Той прави регистриране под различни нива и формати. Нивата на регистриране показват сериозността на проблема.

Различните нива на регистриране са както е показано по-долу:

{
  error: 0,
  warn: 1,
  info: 2,
  http: 3,
  verbose: 4,
  debug: 5,
  silly: 6
}

Изходният формат на журнала може да бъде персонализиран, филтриран и комбиниран. Регистрационните файлове включват информация за клеймото за време, етикети, свързани с регистрационен файл, милисекунди, изминали от предишния регистрационен файл и др.

Winston също обработва изключения и неуловени обещания. Той предоставя допълнителни функции като архивиране на заявки по време на изпълнение, поточно предаване на регистрационни файлове и т.н. Първо трябва да инсталирате Winston. След това се създава конфигурационен обект Winston, заедно с транспорта, за съхраняване на регистрационния файл. Регистриращ обект се създава с помощта на функцията createLogger() и към него се предава регистрационното съобщение.

Ноде-Бунян

Bunyan се използва за бързо влизане в node.js във формат JSON. Той също така предоставя CLI (интерфейс на командния ред) инструмент за преглед на регистрационните файлове. Той е лек и поддържа различни среди за изпълнение като Node.js, Browserify, WebPack и NW.js. JSON форматът на регистрационните файлове е допълнително разкрасен с помощта на функцията за красив печат. Дневниците имат различни нива като фатално, грешка, предупреждение, информация, отстраняване на грешки и проследяване; всеки е свързан с числова стойност.

Всички нива над нивото, зададено за екземпляра, се регистрират. Потокът Bunyan е място, където се регистрират изходите. Подкомпонентите на приложение могат да бъдат регистрирани с помощта на функцията log.child(). Всички дъщерни регистратори са обвързани с конкретно родителско приложение. Типът поток може да бъде файл, ротационен файл, необработени данни и т.н. Примерният код за дефиниране на поток е показан по-долу:

var bunyan = require('bunyan');
var log = bunyan.createLogger({
    name: "foo",
    streams: [
        {
            stream: process.stderr,
            level: "debug"
        },
        ...
    ]
});

Bunyan също поддържа DTrace регистриране. Пробите, участващи в регистрирането на DTrace, включват проследяване на журнал, предупреждение за журнал, грешка в журнал, информация за журнал, отстраняване на грешки в журнал и фатален журнал. Bunyan използва сериализатори, за да създаде регистрационните файлове във формат JSON. Функциите на сериализатора не хвърлят изключения и са защитни.

Loglevel

Loglevel се използва за влизане в Javascript приложения. Освен това е един от най-добрите регистратори на Node.js, тъй като е лек и прост. Той регистрира даденото ниво и използва един файл без зависимости за регистриране. Нивото на регистрационния файл по подразбиране е „предупреждение“. Резултатите от регистрационния файл са добре форматирани заедно с номерата на редовете. Някои методи, използвани за регистриране, са проследяване, отстраняване на грешки, предупреждение, грешка и информация.

  7 най-добри специализирани сървърни хостинга за вашите критични бизнес приложения

Те са устойчиви на отказ във всяка среда. getLogger() е методът, използван за извличане на регистриращия обект. Може да се комбинира и с други плъгини, за да се разширят неговите функции. Някои от добавките включват loglevel-plugin-prefix, loglevel-plugin-remote, ServerSend и DEBUG. Плъгинът за добавяне на префиксни съобщения към регистриране е показан по-долу:

var originalFactory = log.methodFactory;
log.methodFactory = function (methodName, logLevel, loggerName) {
    var rawMethod = originalFactory(methodName, logLevel, loggerName);

    return function (message) {
        rawMethod("Newsflash: " + message);
    };
};
log.setLevel(log.getLevel()); // Be sure to call setLevel method in order to apply plugin

Компилациите се изпълняват с помощта на командата npm run dist, а тестовете могат да се изпълняват с помощта на командата npm test. Нивото на регистрационен файл поддържа пакети Webjar, Bower и Atmosphere. Нова версия на Loglevel се пуска всеки път, когато се добавят нови функции.

Сигнал

Signale се състои от 19 логера за Javascript приложения. Той поддържа TypeScript и регистриране с обхват. Състои се от таймери, които помагат да регистрирате времевия печат, данните и името на файла. Освен 19 регистратора като чакане, завършване, фатален, предпочитан, информация и т.н., можете да създавате персонализирани журнали.

Персонализираните регистрационни файлове се създават чрез дефиниране на JSON обект и полета с данните от регистратора. Могат да се създават и интерактивни регистратори. Когато интерактивният регистратор е зададен на true, новите стойности от интерактивните регистратори заменят старите.

Най-добрата част от Signale е възможността за филтриране на секретна или чувствителна информация. Множество тайни се съхраняват в масив. addSecrets() и clearSecrets() са функциите, използвани за добавяне и изчистване на тайните от масива. Boostnote, Docz, Shower, Taskbook и Vant използват Signale за регистриране. Синтаксисът за извикване на API от Signale е както следва:

signale.<logger>(message[,message]|messageObj|errorObj)

Броят на изтеглянията на Signale е над 1 милион към момента на писане на тази статия.

Tracer

Tracer се използва за създаване на подробни съобщения за регистриране. Регистриращите съобщения се състоят от времеви марки, имена на файлове, номера на редове и имена на методи. Помощни пакети могат да бъдат инсталирани, за да персонализирате изходния формат на регистриране. Помощните пакети могат да бъдат инсталирани чрез следната команда.

 npm install -dev tracer

Tracer поддържа файлов, поточен и MongoDB транспорт. Поддържа цветна конзола и условия за филтриране при регистриране. Първоначално програмата за проследяване трябва да се инсталира с помощта на npm install. Второ, трябва да се създаде регистриращ обект и да се избере вида на конзолата. След това различните нива или типове на регистрационни файлове могат да бъдат зададени върху обекта за по-нататъшно регистриране.

Могат да се създават персонализирани филтри чрез дефиниране на синхронни функции с бизнес логиката, присъстваща в тялото на функцията. Микрошаблони като tinytim също могат да се използват за регистриране на системата.

Cabin.js

Cabin се използва за регистриране от страна на сървъра и клиента на node.js приложения. Използва се, когато се изисква маскиране на чувствителна и критична информация. Това включва номера на кредитни карти, заглавки BasicAuth, соли, пароли, CSRF токени и номера на банкови сметки. Кодовият фрагмент по-долу показва регистриране с помощта на Cabin.js.

const Cabin = require('cabin');
const cabin = new Cabin();
cabin.info('hello world');
cabin.error(new Error('oops!'));

Състои се от повече от 1600 имена на полета. Той също така следва принципа на Bring Your Own Logger (BYOL). Това го прави съвместим с различни други регистратори като Axe, Pino, Bunyan, Winston и т.н. Намалява разходите за съхранение на дискове поради автоматичен поток и Cabin буфери. Той е съвместим с различни платформи и лесен за отстраняване на грешки.

  Опитайте тези 10 безплатни софтуера за управление на задачи и проекти

Регистрирането от страна на сървъра изисква използване на междинен софтуер за маршрутизиране и автоматично регистриране на изхода. Регистрирането от страна на браузъра изисква XHR заявки и скриптове. Той използва Axe, който показва метаданни, т.е. данни за данни, следи на стека и други грешки. SHOW_STACK и SHOW_META са булеви променливи, зададени на true или false за показване или скриване на следи на стека и метаданни.

Npmlog

Npmlog е основен тип регистратор, който npm използва. Някои от използваните методи за регистриране са ниво, запис, maxRecordSize, prefixStyle, заглавие и поток. Той също така поддържа цветно регистриране. Различните нива на регистриране са глупави, подробни, информация, предупреждение, http и грешка. Примерен кодов фрагмент за използване на npm log е показан по-долу.

var log = require('npmlog')

// additional stuff ---------------------------+
// message ----------+                         |
// prefix ----+      |                         |
// level -+   |      |                         |
//        v   v      v                         v
    log.info('fyi', 'I have a kitty cat: %j', myKittyCat)

Всички съобщения се потискат, ако „Безкрайност“ е посочено като ниво на журнал. Ако „-Infinity“ е посочено като ниво на регистрационни файлове, опцията за преглед на съобщенията за регистриране трябва да бъде активирана, за да видите регистрационните файлове.

Събития и обекти на съобщения се използват за регистриране. Префиксните съобщения се излъчват, когато се използват префиксни събития. Стиловите обекти се използват за форматиране на регистрационните файлове, като добавяне на цвят към текст и фон, стил на шрифта като удебелен шрифт, курсив, подчертаване и т.н. Някои пакети за npm журнал са brolog, npmlogger, npmdate log и др.

Рев

Roarr е логер за Node.js, който не изисква инициализация и произвежда структурирани данни. Има CLI и променливи на околната среда. Съвместим е с браузър. Може да се интегрира с Fastify, Fastify, Elastic Search и др. Може да прави разлика между код на приложение и код на зависимост. Всяко лог съобщение се състои от контекст, съобщение, последователност, време и версия. Различните нива на журнал включват проследяване, отстраняване на грешки, информация, предупреждение, грешка и фатално. Примерен кодов фрагмент за това как се извършва регистриране в Roarr е както следва:

import {
  ROARR,
} from 'roarr';

ROARR.write = (message) => {
  console.log(JSON.parse(message));
};

Също така може да се извърши сериализиране на грешки, което означава, че екземплярът с грешката може да бъде регистриран заедно с контекста на обекта. Някои от променливите на средата, които са специфични за Node.js и Roarr, са ROARR_LOG и ROARR_STREAM. „adopt“ е функция, която се използва с node.js за предаване на свойствата на контекста до различни нива. Дъщерните функции могат да се използват и с междинен софтуер, докато регистрирате.

Заключителни думи

Регистрирането е метод за проследяване на различни дейности и събития по време на изпълнение на програма. Регистрирането играе жизненоважна роля при отстраняването на грешки в кода. Той също така помага за увеличаване на четливостта на кода. Node.js е среда за изпълнение на javascript с отворен код. Някои от най-добрите регистратори на Node.js са Pino, Winston, Bunyan, Signale, Tracer, Npmlog и др. Всеки тип регистратор има свои собствени функции като профилиране, филтриране, стрийминг и транспортиране.

Някои регистратори поддържат цветни конзоли, а други са подходящи за работа с чувствителна информация. Подробните и форматирани регистрационни файлове помагат най-много на разработчиците, докато се опитват да коригират грешки в своя код. Форматът JSON обикновено се предпочита за регистриране, тъй като записва данни под формата на двойки ключ-стойност, което го прави лесен за използване.

Логерите също могат да бъдат интегрирани с други приложения и са съвместими с няколко браузъра. Винаги е препоръчително да разгледате нуждите и приложенията, които изграждате, преди да изберете типа логер, който искате да използвате.

Можете също така да разгледате как да инсталирате Node.js и NPM на Windows и macOS.