Zapisivanje može biti neprocjenjiv alat za rješavanje problema i analizu upotrebe aplikacije. Ovi paketi olakšavaju proces.

Ispravno bilježenje ključan je aspekt izgradnje i održavanja funkcionalnih web aplikacija. Može vam pomoći u praćenju pogrešaka, dijagnosticiranju problema s izvedbom i razumijevanju načina na koji korisnici stupaju u interakciju s vašom aplikacijom.

Node.js ima mnogo paketa za bilježenje koji vam pomažu u stvaranju i upravljanju strukturiranim dnevnicima. Ovdje ćete istražiti najbolje pakete za bilježenje trenutno dostupne u ekosustavu Node.js i kako ih koristiti.

1. Winstone

Winston je biblioteka Node.js koja pruža fleksibilnu funkciju zapisivanja, uključujući višestruke prijenose. "Transport" je medij za pohranu vaših zapisa.

Winston podržava prijenose konzole, datoteka i mreže. To znači da možete ispisati svoje zapisnike na konzolu, zapisati ih u datoteku ili ih poslati preko mreže. Koristeći Winstonove razine zapisivanja, možete kreirati prilagođene prijenose i filtrirati zapisnike na temelju ozbiljnosti.

instagram viewer

Možete instalirati Winston kao ovisnost u vašem direktoriju projekta koristeći npm, JavaScript upravitelj paketa. Pokrenite ovu naredbu:

npm instalirati winston

Blok koda u nastavku pokazuje kako postaviti osnovni sustav zapisivanja koristeći Winston. Možete definirati zapisnike za različite lokacije i različite razine ozbiljnosti.

konst winston = zahtijevati("winston");

// Winston drvosječa
konst logger = winston.createLogger({
razina: 'info',
format: winston.format.json(),
defaultMeta: { servis: 'moja-usluga' },
prijevozi: [
novi winston.prevozi. Konzola(),
novi winston.prevozi. Datoteka({ naziv datoteke: 'error.log', razini: 'greška' }),
novi winston.prevozi. Datoteka({ naziv datoteke: 'combined.log' })
]
});

logger.info('Zdravo, Winstone!');
logger.warn('Upozorenje: nešto možda nije u redu.');
logger.error('Dogodila se pogreška.');

Ovaj kod konfigurira logger s tri transporta. Prvi je transport konzole, koji će ispisati poruke dnevnika na konzolu. Drugi je prijenos datoteka koji će zapisivati ​​zapise s razinom "greška" u datoteku "error.log". Treći je prijenos datoteka koji će zapisati sve zapisnike u datoteku "combined.log".

Zapisnik je prema zadanim postavkama postavljen da bilježi na razini "info" i uključuje zadani objekt metapodataka s poljem "service" postavljenim na "my-service".

Kôd zatim bilježi tri poruke pomoću zapisivača na razinama "info", "upozorenje" i "greška". Ove poruke će biti poslane na konzolu i odgovarajuće datoteke dnevnika u skladu s konfiguracijom prijenosa.

2. Morgan

Morgan je međuware za bilježenje za Node.js koji pruža osnovne mogućnosti bilježenja zahtjeva. Dizajniran je da bude lagan i jednostavan za korištenje. Morgan radi tako što presreće HTTP zahtjeve i bilježi relevantne informacije, kao što je metoda zahtjeva, URL, statusni kod itd.

Jedna od ključnih prednosti Morgana je njegova jednostavnost. Možete ga dodati Node.js aplikaciji s nekoliko redaka koda jer ne zahtijeva dodatnu konfiguraciju za postavljanje.

Morgan podržava više formata zapisivanja, uključujući uobičajen, kombinirani, kratak, sitan, i dev formata, omogućujući vam da odaberete onaj koji najbolje odgovara vašim potrebama.

Možete instalirati Morgan kao ovisnost u svom direktoriju projekta pokretanjem ove naredbe:

npm instalirajte morgan

Ovaj kôd pokazuje kako koristiti Morgan u Express aplikacija:

konst izraziti = zahtijevati("izraziti");
konst morgan = zahtijevati("morgan");
konst app = express();

app.use (morgan("dev"));

app.get("/", (req, res) => {
res.send("Pozdrav svijete!");
});

app.listen(3000, () => konzola.log(`Aplikacija pokrenuta`));

Kod inicijalizira Morgana pomoću dev format. Kada uputite GET zahtjev na korijensku rutu (/), Morgan zapisuje detalje tog zahtjeva na konzolu.

Unatoč svojoj jednostavnosti, Morgan je moćan paket za bilježenje koji pruža bitne mogućnosti bilježenja zahtjeva za Node.js aplikacije.

3. Pino

Pino je popularan i lagan paket za bilježenje za Node.js aplikacije koji se može pohvaliti brzim performansama i malim troškovima, kao što je navedeno u njihova mjerila.

Pino podržava više vrsta transporta, lako proširenih prilagođenim transportima. Jedna od ključnih značajki Pina je njegova sposobnost bilježenja poruka formatiranih u JSON formatu, što ih čini jednostavnim za raščlanjivanje i analizu.

Upotreba Pino-a razlikuje se ovisno o okviru Node.js; možete instalirati Pino kao ovisnost u direktoriju vašeg Express projekta pokretanjem naredbe ispod:

npm instalirajte pino-http

Za različite okvire provjerite Pino dokumentacija.

Ovaj blok koda pokazuje Pinoovu upotrebu u Express aplikaciji:

konst izraziti = zahtijevati("izraziti");
konst app = express();
konst pino = zahtijevati('pino-http')()

app.use (pino)

app.get("/", (req, res) => {
pino (req, res) // bilježi zahtjev i odgovor
req.log.info('root route') // bilježi dodatne informacije
res.send("Pozdrav svijete!");
});

app.listen(3000, () => konzola.log(`Aplikacija pokrenuta`));

Ovaj kod inicijalizira Pino i registrira ga kao međuprogram. Kada uputite GET zahtjev na korijensku rutu (/), Pino bilježi detalje vašeg zahtjeva i njegov odgovor na konzolu.

4. Debug

Debug je paket za bilježenje za Node.js po uzoru na tehniku ​​otklanjanja pogrešaka jezgre Node.js. Pruža lagano rješenje za bilježenje koje vam omogućuje da selektivno omogućite ili onemogućite bilježenje bez mijenjanja koda, što olakšava otklanjanje pogrešaka i problema.

Debug vam također omogućuje da postavite prostore imena dnevnika, koji pružaju hijerarhijsku strukturu vašim zapisima na temelju komponenti i modula u vašoj aplikaciji, što olakšava njihovo filtriranje i pretraživanje. Osim toga, Debug nudi različite razine zapisivanja, kao što su pogreške, upozorenja i informacije, koje možete koristiti za određivanje prioriteta i filtriranje njihovih zapisa.

Možete instalirati Debug kao ovisnost u svom direktoriju projekta ovom naredbom:

npm instalirajte debug

Ovaj kôd prikazuje korištenje Debuga u Express aplikaciji:

konst izraziti = zahtijevati('izraziti');

// Uvoz otklanjanja pogrešaka i stvaranje prostora imena
konst debug = zahtijevati('debug')('myapp: server');

konst app = express();
konst luka = ​​proces.env. LUKA || 3000;

app.get('/', (req, res) => {
debug('Primljen zahtjev za /');
res.send('Pozdrav svijete!');
});

app.listen (port, () => {
debug(`Poslužitelj sluša port ${port}`);
});

Kod stvara prostor imena, myapp: poslužitelj. Ovaj prostor imena razlikovat će zapise povezane s vašim "poslužitelj” od onih povezanih s drugim modulima s različitim prostorom imena u vašoj aplikaciji.

Pokrenite ovu naredbu da biste pokrenuli debug:

DEBUG=myapp:* čvor server.js

Ova gornja naredba će odgovarati bilo kojoj poruci dnevnika s prostorom imena koji počinje s moja aplikacija:. Ako želite vidjeti samo zapise koji se odnose na vaš poslužitelj modul, možete postaviti DEBUG varijabla okoline to myapp: poslužitelj.

Još jedna prednost Debuga je njegova kompatibilnost s drugim paketima za bilježenje, kao što je Winston.

Odabir paketa za bilježenje

Odabir paketa za bilježenje važna je odluka koja može značajno utjecati na učinkovitost i djelotvornost vašeg procesa otklanjanja pogrešaka. Bitno je uzeti u obzir čimbenike kao što su značajke i mogućnosti paketa, njegove kompatibilnost s vašim programskim jezikom i razvojnim okruženjem te jednostavnost korištenja i konfiguracija.

U konačnici, izbor paketa za bilježenje ovisit će o specifičnim potrebama i zahtjevima vašeg projekta.