Prijava u Node.js jedan je od najvažnijih i najkorisnijih koraka koje programer može poduzeti kada radi u Node.js. To je jedan od najkorisnijih koraka za razvojnog programera u svakom slučaju njihovog okruženja za izvođenje. Prijava u Node.js pomaže programerima da znaju što je to što njihov kod zapravo radi. Prijava u Node.js može pomoći programerima uštedjeti sate rada na otklanjanju pogrešaka. Osnovna svrha zapisivanja je spremanje informacija o svakom toku ili vremenu izvođenja. Razvojni programer koristi ove informacije kako bi razumio svoju aplikaciju. Na primjer, ako je bug prisutan u odjeljku baze podataka aplikacije, zapisnik ukazuje na mjesto kvara što vam pomaže da identificirate uzrok problema.
Također pročitajte: Node js na hostingu: Najbolje hosting platforme za 2021
Prijava u Node.js
Trebate upamtiti da se ne moraju sve informacije zabilježiti. Na primjer, osobni podaci kao što su osjetljivi podaci, korisnički podaci, lozinke i podaci o kreditnoj kartici. Također je potrebno zapamtiti da je alat koji koristite za bilježenje manje važan u usporedbi s vašim pristupom bilježenju. Raspravljajmo o nekim od najučinkovitijih pristupa u sklopu Logiranja u Node.js.
Početak s konzola.log
Postoji argument da bi trebala biti redovita praksa imati console.log oko vaših aplikacija kada gradite popratni projekt. Postoje neke druge metode konzole kao što su konzola.grupa, konzola.infoa ostale manje uobičajene metode uključuju console.error:
console.error('Error!');
Dok izvodite console.log, postoji mogućnost da ćete primijetiti zanemarivo smanjenje performansi. Preporučujemo da se prebacite na biblioteku zapisivanja kada se vaš projekt počne širiti kako biste izbjegli negativan utjecaj na izvedbu.
Premjestite se u biblioteku dnevnika
Programeri koriste biblioteke zapisnika za stvaranje i upravljanje događajima zapisnika. Povećava ukupnu učinkovitost i funkcionalnost vaše aplikacije. Nekoliko primjera knjižnica zapisivanja za Node je Winstone, Bunyani Log4js. Winston će biti najbolji izbor ako želite pohraniti svoj dnevnik pogrešaka na udaljenu lokaciju ili drugu bazu podataka. To je zato što može podržati više transporta. Bunyan također ima mogućnost podržavanja višestrukih prijenosa i dolazi s CLI-jem za filtriranje. Log4js je alternativna opcija koja podržava tokove dnevnika, kao što je prijavljivanje na konzolu, i agregatore dnevnika poput Loggly (pomoću pridodan).
Možete postaviti biblioteku zapisivanja koristeći Winston uz pomoć dolje navedenog primjera:
const winston = require('winston'); const config = require('./config'); const enumerateErrorFormat = winston.format((info) => { if (info instanceof Error) { Object.assign(info, { message: info.stack }); } return info; }); const logger = winston.createLogger({ level: config.env === 'development' ? 'debug' : 'info', format: winston.format.combine( enumerateErrorFormat(), config.env === 'development' ? winston.format.colorize() : winston.format.uncolorize(), winston.format.splat(), winston.format.printf(({ level, message }) => `${level}: ${message}`) ), transports: [ new winston.transports.Console({ stderrLevels: ['error'], }), ], }); module.exports = logger;
Ovdje biste trebali imati na umu da uvijek možete koristiti standardni console.log, ali biblioteka za bilježenje može biti funkcionalnija i također će pomoći u izbjegavanju smanjenja performansi aplikacije.
Bilježite HTTP zahtjeve u Node s Morganom
Bilježenje vašeg HTTP zahtjeva u vašoj aplikaciji Node.js još je jedna najbolja praksa. Najpopularniji alat za postizanje toga je Morgan. Ima mogućnost dobivanja zapisnika poslužitelja i sistematizira ih kako bi bili čitljiviji.
Morate samo postaviti sljedeći oblik niza za korištenje Morgana:
morgan = require('morgan'); app.use(morgan('dev'));
Unaprijed definirani niz formata za referencu je sljedeći:
morgan('tiny')
Očekivani iznos prikazan je na slici ispod:
Konfigurirajte Winstona s Morganom
Ako koristite biblioteku Winston, možete jednostavno konfigurirati s Morganom na sljedeći način:
const morgan = require('morgan'); const config = require('./config'); const logger = require('./logger'); morgan.token('message', (req, res) => res.locals.errorMessage || ''); const getIpFormat = () => (config.env === 'production' ? ':remote-addr - ' : ''); const successResponseFormat = `${getIpFormat()}:method :url :status - :response-time ms`; const errorResponseFormat = `${getIpFormat()}:method :url :status - :response-time ms - message: :message`; const successHandler = morgan(successResponseFormat, { skip: (req, res) => res.statusCode >= 400, stream: { write: (message) => logger.info(message.trim()) }, }); const errorHandler = morgan(errorResponseFormat, { skip: (req, res) => res.statusCode < 400, stream: { write: (message) => logger.error(message.trim()) }, }); module.exports = { successHandler, errorHandler, };
U gore spomenutom primjeru možete vidjeti da za konfiguriranje Winstona s Morganom, samo morate postaviti Winston za prosljeđivanje izlaza Morgana natrag njemu.
Definirati log levels
Prije nego što krenete u izgradnju sa svojim razvojnim timom, potrebno je definirati svoje razine zapisa. Na taj način možete razlikovati događaje dnevnika. Kada upravljate događajima u zapisnicima na uredan način, postaje lakše dobiti važne informacije na prvi pogled. Postoje različite razine zapisnika i potrebno je da ih i njihovu upotrebu. Svaka razina zapisnika daje grubu smjernicu o važnosti i hitnosti poruke. Uobičajene razine navedene su u nastavku:
- Debug: Programeri ga uglavnom koriste.
- Greška: Važni događaji koji će uzrokovati neuspjeh u izvršavanju programa.
- Info: Sadrži važne događaje s detaljima izvršenog zadatka.
- Upozoriti: Sadrži ključne događaje koje biste trebali primijetiti kako biste spriječili kvarove.
Programer će moći vidjeti detaljan događaj i prema tome odrediti treba li ga odmah popraviti.
Koristiti logs sa alog mupravljanje ssustav
Ovisno o veličini vaše aplikacije, moglo bi biti od pomoći izvući zapise iz vaše aplikacije. Zatim njima možete zasebno upravljati uz pomoć sustava za upravljanje zapisima. Sustavi za upravljanje zapisima mogu pratiti i analizirati zapise dok se događaju u stvarnom vremenu. To vam zauzvrat pomaže da poboljšate svoj kod. U dolje navedenom primjeru možete vidjeti da će vam sustav za upravljanje zapisnicima pomoći da pratite korisne podatke. Na primjer, anomalije, izvori dnevnika, pozadinske pogreške i proizvodne pogreške.
Preporučujemo vam Loggly, McAfee Enterprise, Graylog, Sentry, Logstash, Splunk i Logmatic za alate za analizu dnevnika i upravljanje zapisima.
Alati za praćenje zdravlja
Alati za nadzor ispravnosti dobar su način za praćenje performansi vašeg poslužitelja i zatim utvrđivanje uzroka pada aplikacije ili prekida rada. Većina alata za praćenje zdravlja nudi praćenje pogrešaka, kao i upozorenja te opće praćenje performansi. Neki programeri pronalaze praćenje pogrešaka posebno frustrirajuće u Node.js. Dakle, korištenje alata za praćenje zdravlja može pomoći u ublažavanju nekih od tih poteškoća.
U nastavku je nekoliko popularnih alata za praćenje za Node.js:
- PM2
- Sematext
- Appmetrics
- KlinikaJS
- AppSignal
- Express Status Monitor
Zaključak
U ovom blogu ćemo pogledati koliko je važno bilježenje i kako može pomoći programerima da bolje razumiju svoje aplikacije. Također smo razgovarali o najboljim praksama bilježenja u Node.js, uključujući korištenje biblioteke dnevnika, bilježenje HTTP zahtjeva, definiranje razina dnevnika i korištenje sustava za upravljanje zapisima.
Infrastruktura je potpuno sigurna ili potpuno pogreška-free. Zapisivanje je neophodan korak za programere koji žele pratiti proizvodnju i smanjiti pogreške. Zapisivanje također može biti korisno za druge članove tima, uključujući QA, podršku i nove programere, jer sprema vrijedne informacije na koje se mogu osloniti i nadograđivati.