9 Biblioteci de înregistrare Node.js pe care le puteți încerca pentru o înregistrare mai bună

Te lupți cu depanarea codului? Căutați câteva soluții de logare care ar putea face depanarea mai ușoară? Citiți mai departe pentru a afla mai multe.

Dezvoltarea software-ului trece prin mai multe faze: colectarea cerințelor, analiză, codificare, testare și întreținere. Dintre toate aceste faze, faza de codificare/dezvoltare necesită mult timp și efort. Inginerii de software se ocupă de erori de sintaxă, erori logice și erori de rulare. Erorile sintactice sunt identificate în timpul compilării și apar datorită faptului că codul nu respectă regulile unui limbaj de programare.

Pe de altă parte, erorile logice și de rulare nu pot fi identificate de către mediul de dezvoltare integrat (IDE) și sunt adesea dificil de depanat și remediat. Rezolvarea erorilor este un proces care consumă timp și necesită multă depanare.

Depanarea este un proces în care cineva încearcă să înțeleagă de ce codul scris nu funcționează conform așteptărilor. Este ușor să rezolvăm problema atunci când cunoaștem greșeala și liniile exacte din cod în care apare. Prin urmare, înregistrarea în jurnal este foarte utilă pentru depanarea codului.

Ce este Logging?

Logging-ul este o tehnică prin care mesajele sunt captate în timpul execuției unui program. Trebuie să înregistrezi doar acele mesaje, care le-ar putea ajuta la depanare. Deci, a ști când să adăugați instrucțiuni de jurnal la cod este extrem de important. De asemenea, diferențierea între instrucțiunile de jurnal este la fel de esențială. Există diferite niveluri în înregistrare, cum ar fi informații, avertizare, eroare, depanare și verbose. Declarațiile de eroare și de avertizare sunt utilizate pentru tratarea excepțiilor.

Datele care sunt returnate de la funcții, rezultatele după manipularea matricei, datele preluate de la API-uri etc., sunt câteva exemple de date care pot fi înregistrate folosind instrucțiuni info. Jurnalele de depanare și detaliate sunt folosite pentru a oferi o descriere detaliată a erorilor.

Jurnalul de depanare oferă informații despre urmărirea stivei, parametrii de intrare-ieșire etc. „Verbose” nu este la fel de detaliat ca jurnalul de „depanare”, dar oferă o listă a tuturor evenimentelor care au avut loc. Jurnalele sunt scrise în consolă, fișiere și flux de ieșire. Instrumentele de gestionare a jurnalelor pot fi utilizate pentru înregistrarea structurată și formatată.

Înregistrare Node.js

Nodejs este un mediu de rulare javascript. Aplicațiile Node.js sunt asincrone și neblocante și sunt utilizate în sistemele în timp real și cu consum intens de date. Cel mai bun mod de a afla mai multe despre Node.js este să parcurgeți tutorialele Node.js și documentația acestuia. Înregistrarea este necesară pentru a îmbunătăți performanța, depanarea și urmărirea erorilor. Conectarea la Node.js se poate face folosind funcția încorporată console.log. De asemenea, funcția de depanare este interconectată cu mai multe pachete și poate fi utilizată eficient.

Middleware-ul este utilizat pentru gestionarea cererilor și răspunsurilor. Middleware-ul ar putea fi o aplicație sau orice alt cadru Javascript. Conectarea la middleware se poate face prin aplicații și routere. Orice logger Node.js trebuie să folosească comanda npm sau yarn install pentru a instala logger-urile.

Npm înseamnă „Node Package Manager” și YARN înseamnă „Yet Another Resource Negotiator”. Cu toate acestea, Yarn este preferat față de npm, deoarece este mai rapid și instalează pachete în paralel.

Unele dintre cele mai bune înregistratoare Node.js sunt enumerate mai jos:

Pino

Pino este o bibliotecă care este una dintre cele mai bune înregistrări pentru aplicațiile Node.js. Este open source, extrem de rapid și înregistrează declarațiile într-un format JSON ușor de citit. Unele dintre nivelurile de jurnal Pino sunt: ​​mesaje de depanare, avertizare, eroare și informații. O instanță Pino logger poate fi importată în proiect, iar instrucțiunile console.log trebuie înlocuite cu instrucțiuni logger.info.

  Ce s-a întâmplat cu LimeTorrents?

Utilizați următoarea comandă pentru a instala Pino:

$ npm install pino   

Jurnalele generate sunt elaborate și în format JSON, evidențiind numărul de linie al jurnalului, tipul de jurnal, ora la care a fost înregistrat, etc. Pino provoacă o înregistrare minimă de supraîncărcare într-o aplicație și este extrem de flexibil în procesarea jurnalelor.

Pino poate fi integrat cu cadre web precum Hapi, Restify, Express etc. Jurnalele generate de Pino pot fi, de asemenea, stocate în fișiere. Folosește fire de lucru pentru funcționare și este compatibil cu TypeScript.

Winston

Winston acceptă înregistrarea pentru diferite cadre web, cu accent principal pe flexibilitate și extensibilitate. Acceptă mai multe tipuri de transport și poate stoca jurnalele în diferite locații ale fișierelor. Transporturile sunt locuri în care sunt stocate mesajele de jurnal.

Împreună cu unele transporturi încorporate, cum ar fi Http, Console, File și Stream, acceptă alte transporturi, cum ar fi Cloud Watch și MongoDB. Se înregistrează sub diferite niveluri și formate. Nivelurile de înregistrare indică gravitatea problemei.

Diferitele niveluri de înregistrare sunt prezentate mai jos:

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

Formatul de ieșire a jurnalului poate fi personalizat, filtrat și combinat. Jurnalele includ informații despre marcajul de timp, etichetele asociate unui jurnal, milisecundele scurse din jurnalul anterior etc.

Winston se ocupă, de asemenea, de excepții și de promisiuni neprinse. Acesta oferă caracteristici suplimentare, cum ar fi depunerea interogărilor, jurnalele de streaming etc. În primul rând, trebuie să instalați Winston. Apoi, un obiect de configurare Winston, împreună cu transportul, este creat pentru stocarea jurnalului. Un obiect logger este creat folosind funcția createLogger() și mesajul jurnal îi este transmis.

Node-Bunyan

Bunyan este folosit pentru înregistrarea rapidă în node.js în format JSON. De asemenea, oferă un instrument CLI (Command Line Interface) pentru vizualizarea jurnalelor. Este ușor și acceptă diverse medii de rulare, cum ar fi Node.js, Browserify, WebPack și NW.js. Formatul JSON al jurnalelor este înfrumusețat în continuare folosind funcția de imprimare drăguță. Jurnalele au diferite niveluri, cum ar fi fatal, eroare, avertizare, informații, depanare și urmărire; fiecare este asociat cu o valoare numerică.

Toate nivelurile peste nivelul setat pentru instanță sunt înregistrate. Fluxul Bunyan este un loc în care sunt înregistrate ieșirile. Subcomponentele unei aplicații pot fi înregistrate folosind funcția log.child(). Toți înregistratorii copii sunt legați de o anumită aplicație părinte. Tipul de flux poate fi un fișier, fișier rotativ, date brute etc. Exemplul de cod pentru definirea unui flux este prezentat mai jos:

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

Bunyan acceptă, de asemenea, înregistrarea DTrace. Sondele implicate în înregistrarea DTrace includ log-trace, log-warn, log-error, log-info, log-debug și log-fatal. Bunyan folosește serializatoare pentru a produce jurnalele în format JSON. Funcțiile de serializare nu fac excepții și sunt defensive.

Loglevel

Loglevel este folosit pentru autentificarea în aplicațiile Javascript. Este, de asemenea, unul dintre cele mai bune înregistrări ale Node.js, deoarece este ușor și simplu. Înregistrează nivelul dat și folosește un singur fișier fără dependențe pentru înregistrare. Nivelul implicit de jurnal este „avertizare”. Ieșirile jurnalului sunt bine formatate împreună cu numerele de rând. Unele metode utilizate pentru înregistrare sunt urmărirea, depanarea, avertizarea, eroarea și informațiile.

  Cum să-ți ștergi contul Badoo

Sunt rezistenți la eșec în orice mediu. getLogger() este metoda folosită pentru a prelua obiectul logger. Poate fi combinat și cu alte plugin-uri pentru a-și extinde funcțiile. Unele dintre pluginuri includ loglevel-plugin-prefix, loglevel-plugin-remote, ServerSend și DEBUG. Pluginul pentru adăugarea mesajelor cu prefix la înregistrare este prezentat mai jos:

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

Compilările sunt executate folosind comanda npm run dist, iar testele pot fi executate folosind comanda npm test. Nivelul de jurnal acceptă pachetele Webjar, Bower și Atmosphere. O nouă versiune de Loglevel este lansată ori de câte ori sunt adăugate noi caracteristici.

Semnal

Signale constă din 19 loggere pentru aplicații Javascript. Acesta acceptă TypeScript și înregistrarea în jurnal. Este format din cronometre care ajută la înregistrarea marcajului de timp, a datelor și a numelui fișierului. În afară de cei 19 loggeri precum await, complete, fatal, fav, info etc., se pot crea jurnale personalizate.

Jurnalele personalizate sunt create prin definirea unui obiect JSON și a câmpurilor cu datele de înregistrare. Se pot crea, de asemenea, loggere interactive. Când un logger interactiv este setat la adevărat, noile valori de la înregistratoarele interactive le înlocuiesc pe cele vechi.

Cea mai bună parte a Signale este capacitatea de a filtra informațiile secrete sau sensibile. Mai multe secrete sunt stocate într-o matrice. addSecrets() și clearSecrets() sunt funcțiile utilizate pentru adăugarea și ștergerea secretelor din matrice. Boostnote, Docz, Shower, Taskbook și Vant folosesc Signale pentru înregistrare. Sintaxa pentru apelarea API-urilor de la Signale este următoarea:

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

Numărul de descărcări Signale este de peste 1 milion la momentul scrierii acestui articol.

Trasor

Tracer este folosit pentru a produce mesaje detaliate de înregistrare. Mesajele de înregistrare constau din marcaje temporale, nume de fișiere, numere de linii și nume de metode. Pachetele de ajutor pot fi instalate pentru a personaliza formatul de înregistrare în jurnal. Pachetele de ajutor pot fi instalate folosind următoarea comandă.

 npm install -dev tracer

Tracer acceptă transportul fișierelor, fluxului și MongoDB. Acceptă consolă de culoare și condiții de filtrare în înregistrare. Inițial, urmăritorul trebuie instalat folosind npm install. În al doilea rând, trebuie creat un obiect logger și trebuie selectat tipul de consolă. Apoi, diferitele niveluri sau tipuri de jurnal pot fi specificate peste obiect pentru înregistrarea ulterioară.

Filtrele personalizate pot fi create prin definirea de funcții sincrone cu logica de afaceri prezentă în corpul funcției. Micro-șabloanele precum tinytim pot fi folosite și pentru înregistrarea în sistem.

Cabin.js

Cabin este folosit pentru înregistrarea pe server și pe partea client a aplicațiilor node.js. Este utilizat acolo unde este necesară mascarea informațiilor sensibile și critice. Acestea includ numere de card de credit, anteturi BasicAuth, săruri, parole, jetoane CSRF și numere de cont bancar. Fragmentul de cod de mai jos arată înregistrarea folosind Cabin.js.

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

Este format din peste 1600 de nume de câmpuri. De asemenea, urmează principiul Bring Your Own Logger (BYOL). Acest lucru îl face compatibil cu diverse alte loggere, cum ar fi Axe, Pino, Bunyan, Winston etc. Reduce costurile de stocare pe discuri datorită fluxului automat și buffer-urilor Cabin. Este compatibil cu mai multe platforme și ușor de depanat.

  Cum să repar iPhone-ul meu este înghețat și nu se va opri sau nu se va reseta

Înregistrarea pe server necesită utilizarea middleware pentru rutare și înregistrarea automată a ieșirii. Înregistrarea la nivelul browserului necesită solicitări și scripturi XHR. Utilizează Ax care afișează metadate, adică date despre date, urme de stivă și alte erori. SHOW_STACK și SHOW_META sunt variabile booleene setate la adevărat sau fals pentru a afișa sau a ascunde urmele și metadatele stivei.

Npmlog

Npmlog este un tip de bază de logger pe care îl folosește npm. Unele dintre metodele de înregistrare utilizate sunt level, record, maxRecordSize, prefixStyle, heading și stream. De asemenea, acceptă înregistrarea colorată. Diferitele niveluri de înregistrare sunt stupide, verbose, info, warn, http și eroare. Un fragment de cod exemplu pentru utilizarea jurnalului npm este afișat mai jos.

var log = require('npmlog')

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

Toate mesajele sunt suprimate dacă „Infinity” este specificat ca nivel de jurnal. Dacă „-Infinity” este specificat ca nivel de jurnal, opțiunea de a vedea mesajele de jurnal trebuie să fie activată pentru a vedea jurnalele.

Evenimentele și obiectele mesaj sunt utilizate pentru înregistrare. Mesajele de prefix sunt emise atunci când sunt utilizate evenimente de prefix. Obiectele de stil sunt folosite pentru formatarea jurnalelor, cum ar fi adăugarea de culoare textului și fundalului, stil de font precum bold, italic, subliniat etc. Unele pachete de jurnal npm sunt brolog, npmlogger, npmdate log etc.

Roarr

Roarr este un logger pentru Node.js care nu necesită inițializare și produce date structurate. Are CLI și variabile de mediu. Este compatibil cu browserul. Poate fi integrat cu Fastify, Fastify, Elastic Search etc. Poate distinge între codul aplicației și codul dependenței. Fiecare mesaj de jurnal constă dintr-un context, mesaj, secvență, timp și versiune. Diverse niveluri de jurnal includ urmărire, depanare, informații, avertizare, eroare și fatale. Un fragment de cod eșantion cu privire la modul în care se face înregistrarea este Roarr este următorul:

import {
  ROARR,
} from 'roarr';

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

De asemenea, se poate face serializarea erorilor, adică instanța cu eroarea poate fi înregistrată împreună cu contextul obiectului. Unele dintre variabilele de mediu care sunt specifice pentru Node.js și Roarr sunt ROARR_LOG și ROARR_STREAM. „adoptă” este o funcție care este utilizată cu node.js pentru a transmite proprietățile contextului la diferite niveluri. Funcțiile copil pot fi folosite și cu middleware, în timpul înregistrării.

Cuvinte finale

Logging-ul este o metodă de a ține evidența diferitelor activități și evenimente în timpul execuției unui program. Jurnalul joacă un rol vital în depanarea codului. De asemenea, ajută la creșterea lizibilității codului. Node.js este un mediu de rulare javascript open-source. Unele dintre cele mai bune înregistratoare Node.js sunt Pino, Winston, Bunyan, Signale, Tracer, Npmlog etc. Fiecare tip de logger are propriile caracteristici precum profilare, filtrare, streaming și transport.

Unele loggere acceptă console colorate, iar altele sunt potrivite pentru gestionarea informațiilor sensibile. Jurnalele detaliate și formatate ajută dezvoltatorii cel mai mult în timp ce încearcă să remedieze erorile din codul lor. Formatul JSON este, în general, preferat pentru înregistrare, deoarece înregistrează datele sub formă de perechi cheie-valoare, ceea ce îl face ușor de utilizat.

Loggerele pot fi, de asemenea, integrate cu alte aplicații și sunt compatibile cu mai multe browsere. Este întotdeauna recomandabil să analizați nevoile și aplicațiile pe care le construiți înainte de a alege tipul de logger pe care doriți să îl utilizați.

De asemenea, puteți vedea cum să instalați Node.js și NPM pe Windows și macOS.