Logging kan være et uvurderlig verktøy for å feilsøke problemer og analysere appbruk. Disse pakkene bidrar til å gjøre det til en enkel prosess.
Riktig logging er et kritisk aspekt ved å bygge og vedlikeholde funksjonelle webapplikasjoner. Det kan hjelpe deg med å spore feil, diagnostisere ytelsesproblemer og forstå hvordan brukere samhandler med appen din.
Node.js har mange loggingspakker som hjelper deg med å opprette og administrere strukturerte logger. Her vil du utforske de beste loggingspakkene som for øyeblikket er tilgjengelige i Node.js-økosystemet og hvordan du bruker dem.
1. Winston
Winston er et Node.js-bibliotek som gir fleksibel loggingsfunksjonalitet, inkludert flere transporter. En "transport" er et lagringsmedium for tømmerstokkene dine.
Winston støtter konsoll-, fil- og nettverkstransport. Dette betyr at du kan skrive ut loggene dine til konsollen, skrive dem til en fil eller sende dem over et nettverk. Ved å bruke Winstons loggingsnivåer kan du lage tilpassede transporter og filtrere logger basert på alvorlighetsgrad.
Du kan installere Winston som en avhengighet i prosjektkatalogen ved å bruke npm, JavaScript-pakkebehandleren. Kjør denne kommandoen:
npm installer winston
Kodeblokken nedenfor viser hvordan du setter opp et grunnleggende loggingssystem ved hjelp av Winston. Du kan definere logger for forskjellige steder og varierende alvorlighetsgrad.
konst winston = krever("winston");
// Winston logger
konst logger = winston.createLogger({
nivå: 'info',
format: winston.format.json(),
defaultMeta: { service: 'min-tjeneste' },
transporter: [
ny winston.transports. Konsoll(),
ny winston.transports. Fil({ filnavn: 'feil logg', nivå: 'feil' }),
ny winston.transports. Fil({ filnavn: 'combined.log' })
]
});
logger.info("Hei, Winston!");
logger.warn('Advarsel: Noe kan være galt.');
logger.error('En feil oppstod.');
Denne koden konfigurerer en logger med tre transporter. Den første er en konsolltransport, som vil sende ut loggmeldinger til konsollen. Den andre er en filtransport som vil skrive logger med nivået "error" til en "error.log"-fil. Den tredje er en filtransport som vil skrive alle logger til en "combined.log"-fil.
Loggeren er satt til å logge på "info"-nivå som standard og inkluderer et standard metadataobjekt med et "tjeneste"-felt satt til "min-tjeneste".
Koden logger deretter tre meldinger ved hjelp av loggeren på henholdsvis "info", "advarsel" og "feil". Disse meldingene sendes ut til konsollen og de riktige loggfilene i henhold til konfigurasjonen av transportene.
2. Morgan
Morgan er en loggingsmellomvare for Node.js som gir grunnleggende forespørselsloggingsfunksjoner. Den er designet for å være lett og enkel å bruke. Morgan jobber ved å avskjære HTTP-forespørsler og logge relevant informasjon, for eksempel forespørselsmetode, URL, statuskode, etc.
En av de viktigste fordelene med Morgan er dens enkelhet. Du kan legge den til i en Node.js-applikasjon med noen få linjer med kode, siden den ikke krever noen ekstra konfigurasjon for å sette opp.
Morgan støtter flere loggingsformater, inkludert felles, kombinert, kort, bittesmå, og dev formater, slik at du kan velge det som passer best for dine behov.
Du kan installere Morgan som en avhengighet i prosjektkatalogen din ved å kjøre denne kommandoen:
npm installer Morgan
Denne koden viser hvordan du bruker Morgan i en Express-applikasjon:
konst uttrykke = krever("uttrykke");
konst Morgan = krever("Morgan");
konst app = express();app.use (morgan("utvikler"));
app.get("/", (req, res) => {
res.send("Hei Verden!");
});
app.listen(3000, () => konsoll.Logg('App startet'));
Koden initialiserer Morgan ved å bruke dev format. Når du foretar en GET-forespørsel til rotruten (/), logger Morgan detaljene for den forespørselen til konsollen.
Til tross for sin enkelhet, er Morgan en kraftig loggingspakke som gir viktige forespørselsloggingsfunksjoner for Node.js-applikasjoner.
3. Pino
Pino er en populær og lett loggingspakke for Node.js-applikasjoner som kan skryte av rask ytelse og lav overhead, som nevnt i sine benchmarks.
Pino støtter flere transporttyper, enkelt utvidet med tilpassede transporter. En av Pinos nøkkelfunksjoner er dens evne til å logge JSON-formaterte meldinger, noe som gjør dem enkle å analysere og analysere.
Bruken av Pino varierer avhengig av Node.js-rammeverket; du kan installere Pino som en avhengighet i din Express-prosjektkatalog ved å kjøre kommandoen nedenfor:
npm installer pino-http
For forskjellige rammer, sjekk Pino dokumentasjon.
Denne kodeblokken viser Pinos bruk i en Express-applikasjon:
konst uttrykke = krever("uttrykke");
konst app = express();
konst pino = krever('pino-http')()app.use (pino)
app.get("/", (req, res) => {
pino (req, res) // logger forespørsel og svar
req.log.info('rotrute') // logger tilleggsinformasjon
res.send("Hei Verden!");
});
app.listen(3000, () => konsoll.Logg('App startet'));
Denne koden initialiserer Pino og registrerer den som mellomvare. Når du sender en GET-forespørsel til rotruten (/), logger Pino detaljene for forespørselen din og svaret til konsollen.
4. Feilsøk
Debug er en loggingspakke for Node.js modellert etter Node.js cores feilsøkingsteknikk. Den gir en lett loggingsløsning som lar deg aktivere eller deaktivere logging selektivt uten å endre koden, noe som gjør det enkelt å feilsøke og feilsøke problemer.
Debug lar deg også angi loggnavnerom, som gir en hierarkisk struktur til loggene dine basert på komponentene og modulene i applikasjonen din, noe som gjør det enklere å filtrere og søke i dem. I tillegg tilbyr Debug ulike loggingsnivåer, for eksempel feil, advarsel og info, som du kan bruke til å prioritere og filtrere loggene deres.
Du kan installere Debug som en avhengighet i prosjektkatalogen din med denne kommandoen:
npm installer feilsøking
Denne koden viser Debugs bruk i en Express-applikasjon:
konst uttrykke = krever('uttrykke');
// Importer feilsøking og opprett navneområde
konst feilsøke = krever('feilsøke')('minapp: server');konst app = express();
konst port = prosess.env. PORT || 3000;app.get('/', (req, res) => {
feilsøke("Motta forespørsel om /");
res.send('Hei Verden!');
});
app.listen (port, () => {
feilsøke(`Server lytter på port ${port}`);
});
Koden oppretter et navneområde, minapp: server. Dette navneområdet vil skille logger relatert til din "server”-modul fra de som er knyttet til andre moduler med et annet navneområde i applikasjonen din.
Kjør denne kommandoen for å starte feilsøking:
DEBUG=minapp:* nodeserver.js
Denne kommandoen ovenfor vil matche enhver loggmelding med et navneområde som starter med minapp:. Hvis du bare vil se logger relatert til din server modul, kan du stille inn FEIL miljøvariabel til minapp: server.
En annen fordel med Debug er dens kompatibilitet med andre loggingspakker, for eksempel Winston.
Velge en loggingspakke
Å velge en loggingspakke er en viktig beslutning som kan påvirke effektiviteten og effektiviteten til feilsøkingsprosessen din betydelig. Det er viktig å vurdere faktorer som funksjonene og egenskapene til pakken, dens kompatibilitet med ditt programmeringsspråk og utviklingsmiljø, og dets brukervennlighet og konfigurasjon.
Til syvende og sist vil valget av loggpakke avhenge av prosjektets spesifikke behov og krav.