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.
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.