Logning kan være et uvurderligt værktøj til fejlfinding af problemer og analyse af appbrug. Disse pakker hjælper med at gøre det til en ligetil proces.

Korrekt logning er et kritisk aspekt ved opbygning og vedligeholdelse af funktionelle webapplikationer. Det kan hjælpe dig med at spore fejl, diagnosticere ydeevneproblemer og forstå, hvordan brugere interagerer med din app.

Node.js har mange logningspakker til at hjælpe dig med at oprette og administrere strukturerede logfiler. Her vil du udforske de bedste logningspakker, der i øjeblikket er tilgængelige i Node.js-økosystemet, og hvordan du bruger dem.

1. Winston

Winston er et Node.js-bibliotek, der giver fleksibel logningsfunktionalitet, herunder flere transporter. En "transport" er et opbevaringsmedium til dine træstammer.

Winston understøtter konsol-, fil- og netværkstransporter. Det betyder, at du kan udskrive dine logfiler til konsollen, skrive dem til en fil eller sende dem over et netværk. Ved at bruge Winstons logningsniveauer kan du oprette brugerdefinerede transporter og filtrere logfiler baseret på sværhedsgrad.

instagram viewer

Du kan installere Winston som en afhængighed i dit projektbibliotek vha npm, JavaScript-pakkemanageren. Kør denne kommando:

npm installere winston

Kodeblokken nedenfor viser, hvordan man opsætter et grundlæggende logningssystem ved hjælp af Winston. Du kan definere logfiler for forskellige steder og varierende sværhedsgrader.

konst winston = kræve("winston");

// Winston logger
konst logger = winston.createLogger({
niveau: 'info',
format: winston.format.json(),
defaultMeta: { service: 'min-tjeneste' },
transporter: [
ny winston.transports. Konsol(),
ny winston.transports. Fil({ filnavn: 'error.log', niveau: 'fejl' }),
ny winston.transports. Fil({ filnavn: 'combined.log' })
]
});

logger.info("Hej, Winston!");
logger.warn('Advarsel: Der kan være noget galt.');
logger.error('En fejl opstod.');

Denne kode konfigurerer en logger med tre transporter. Den første er en konsoltransport, som udsender logmeddelelser til konsollen. Den anden er en filtransport, der vil skrive logfiler med niveauet "error" til en "error.log" fil. Den tredje er en filtransport, der vil skrive alle logfiler til en "combined.log" fil.

Loggeren er som standard indstillet til at logge på "info"-niveauet og inkluderer et standardmetadataobjekt med et "service"-felt indstillet til "min-tjeneste".

Koden logger derefter tre meddelelser ved hjælp af loggeren på henholdsvis "info", "advarsel" og "fejl" niveauer. Disse meddelelser vil blive udsendt til konsollen og de relevante logfiler i henhold til konfigurationen af ​​transporterne.

2. Morgan

Morgan er en lognings-middleware til Node.js, der giver grundlæggende forespørgselslogningsfunktioner. Den er designet til at være let og nem at bruge. Morgan arbejder ved at opsnappe HTTP-anmodninger og logge relevante oplysninger, såsom anmodningsmetoden, URL, statuskode osv.

En af de vigtigste fordele ved Morgan er dens enkelhed. Du kan tilføje det til en Node.js-applikation med et par linjer kode, da det ikke kræver yderligere konfiguration at konfigurere.

Morgan understøtter flere logningsformater, inklusive almindelige, kombineret, kort, lille bitte, og dev formater, så du kan vælge det, der passer bedst til dine behov.

Du kan installere Morgan som en afhængighed i din projektmappe ved at køre denne kommando:

npm installere morgan

Denne kode viser, hvordan du bruger Morgan i en Express-applikation:

konst udtrykke = kræve("udtrykke");
konst morgan = kræve("morgan");
konst app = express();

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

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

app.lyt(3000, () => konsol.log('App startet'));

Koden initialiserer Morgan ved hjælp af dev format. Når du laver en GET-anmodning til rodruten (/), logger Morgan detaljerne for denne anmodning til konsollen.

På trods af sin enkelhed er Morgan en kraftfuld logningspakke, der giver essentielle anmodningslogningsfunktioner til Node.js-applikationer.

3. Pino

Pino er en populær og let logningspakke til Node.js-applikationer, der kan prale af hurtig ydeevne og lav overhead, som angivet i deres benchmarks.

Pino understøtter flere transporttyper, som nemt kan udvides med brugerdefinerede transporter. En af Pinos nøglefunktioner er dens evne til at logge JSON-formaterede beskeder, hvilket gør dem nemme at parse og analysere.

Brugen af ​​Pino varierer afhængigt af Node.js-rammen; du kan installere Pino som en afhængighed i din Express-projektmappe ved at køre kommandoen nedenfor:

npm installere pino-http

For forskellige rammer, tjek Pino dokumentation.

Denne kodeblok viser Pinos brug i en Express-applikation:

konst udtrykke = kræve("udtrykke");
konst app = express();
konst pino = kræve('pino-http')()

app.use (pino)

app.get("/", (req, res) => {
pino (req, res) // logger anmodning og svar
req.log.info('rodrute') // logger yderligere information
res.send("Hej Verden!");
});

app.lyt(3000, () => konsol.log('App startet'));

Denne kode initialiserer Pino og registrerer den som middleware. Når du laver en GET-anmodning til rodruten (/), logger Pino detaljerne for din anmodning og dens svar til konsollen.

4. Fejlfinde

Debug er en logningspakke til Node.js, der er modelleret efter Node.js kernes debugging-teknik. Det giver en letvægtslogningsløsning, der giver dig mulighed for at aktivere eller deaktivere logning selektivt uden at ændre koden, hvilket gør det nemt at fejlfinde og fejlfinde problemer.

Debug giver dig også mulighed for at indstille lognavneområder, som giver en hierarkisk struktur til dine logfiler baseret på komponenterne og modulerne i din applikation, hvilket gør det nemmere at filtrere og søge i dem. Derudover tilbyder Debug forskellige logningsniveauer, såsom fejl, advarsel og info, som du kan bruge til at prioritere og filtrere deres logfiler.

Du kan installere Debug som en afhængighed i din projektmappe med denne kommando:

npm installere fejlretning

Denne kode viser Debugs brug i en Express-applikation:

konst udtrykke = kræve('udtrykke');

// Importer debug og opret navneområde
konst debug = kræve('fejlfinde')('minapp: server');

konst app = express();
konst port = proces.env. PORT || 3000;

app.get('/', (req, res) => {
fejlfinde('Modtaget anmodning om /');
res.send('Hej Verden!');
});

app.listen (port, () => {
fejlfinde(`Server lytter på port ${port}`);
});

Koden opretter et navneområde, myapp: server. Dette navneområde vil skelne logfiler relateret til din "server” modul fra dem, der er knyttet til andre moduler med et andet navneområde i din applikation.

Kør denne kommando for at starte debug:

DEBUG=minapp:* nodeserver.js

Denne kommando ovenfor vil matche enhver logmeddelelse med et navneområde, der starter med min app:. Hvis du kun ønsker at se logfiler relateret til din server modul, kan du indstille FEJLFINDE miljøvariabel til myapp: server.

En anden fordel ved Debug er dens kompatibilitet med andre logningspakker, såsom Winston.

Valg af logningspakke

At vælge en logningspakke er en vigtig beslutning, som kan påvirke effektiviteten og effektiviteten af ​​din fejlretningsproces markant. Det er vigtigt at overveje faktorer såsom funktionerne og mulighederne i pakken, dens kompatibilitet med dit programmeringssprog og udviklingsmiljø, og dets brugervenlighed og konfiguration.

I sidste ende vil valget af logningspakke afhænge af dit projekts specifikke behov og krav.