Protokolovanie môže byť neoceniteľným nástrojom na riešenie problémov a analýzu používania aplikácií. Tieto balíčky pomáhajú zjednodušiť proces.

Správne protokolovanie je kritickým aspektom vytvárania a udržiavania funkčných webových aplikácií. Môže vám pomôcť sledovať chyby, diagnostikovať problémy s výkonom a pochopiť, ako používatelia interagujú s vašou aplikáciou.

Node.js má veľa protokolovacích balíkov, ktoré vám pomôžu vytvárať a spravovať štruktúrované protokoly. Tu preskúmate najlepšie protokolovacie balíky, ktoré sú v súčasnosti dostupné v ekosystéme Node.js a ako ich používať.

1. Winston

Winston je knižnica Node.js, ktorá poskytuje flexibilné funkcie protokolovania vrátane viacerých prenosov. „Preprava“ je úložné médium pre vaše záznamy.

Winston podporuje prenosy konzoly, súborov a siete. To znamená, že svoje protokoly môžete vytlačiť do konzoly, zapísať ich do súboru alebo ich odoslať cez sieť. Pomocou Winstonových úrovní protokolovania môžete vytvárať vlastné prenosy a filtrovať protokoly na základe závažnosti.

instagram viewer

Winston môžete nainštalovať ako závislosť v adresári projektu pomocou npm, správca balíkov JavaScript. Spustite tento príkaz:

npm nainštalujte winston

Blok kódu nižšie ukazuje, ako nastaviť základný systém protokolovania pomocou Winston. Môžete definovať protokoly pre rôzne miesta a rôzne úrovne závažnosti.

konšt winston = vyžadovať("winston");

// Logger Winston
konšt logger = winston.createLogger({
úroveň: 'Info',
formát: winston.format.json(),
defaultMeta: { služby: 'moja služba' },
prepravy: [
Nový winston.prepravy. konzola(),
Nový winston.prepravy. Súbor ({ názov súboru: 'error.log', úrovni: 'chyba' }),
Nový winston.prepravy. Súbor ({ názov súboru: 'combined.log' })
]
});

logger.info("Ahoj, Winston!");
logger.warn('Upozornenie: Niečo môže byť zle.');
logger.error('Nastala chyba.');

Tento kód konfiguruje zapisovač s tromi transportmi. Prvým je transport konzoly, ktorý odošle správy protokolu do konzoly. Druhým je prenos súboru, ktorý zapíše protokoly s úrovňou „chyby“ do súboru „error.log“. Tretím je transport súboru, ktorý zapíše všetky protokoly do súboru „combined.log“.

Záznamník je štandardne nastavený na prihlasovanie na úrovni „informácií“ a obsahuje predvolený objekt metadát s poľom „služba“ nastaveným na „moja služba“.

Kód potom zaznamená tri správy pomocou zapisovača na úrovni „informácie“, „upozornenie“ a „chyba“. Tieto správy budú odoslané na konzolu a príslušné protokolové súbory podľa konfigurácie transportov.

2. Morgan

Morgan je protokolovací middleware pre Node.js, ktorý poskytuje základné možnosti protokolovania požiadaviek. Je navrhnutý tak, aby bol ľahký a ľahko použiteľný. Morgan funguje tak, že zachytáva požiadavky HTTP a zaznamenáva relevantné informácie, ako je metóda požiadavky, adresa URL, stavový kód atď.

Jednou z kľúčových výhod Morgan je jeho jednoduchosť. Môžete ho pridať do aplikácie Node.js pomocou niekoľkých riadkov kódu, pretože nevyžaduje žiadnu dodatočnú konfiguráciu na nastavenie.

Morgan podporuje viacero formátov protokolovania, vrátane bežné, kombinované, krátky, malinký, a dev formátov, čo vám umožní vybrať si ten, ktorý najlepšie vyhovuje vašim potrebám.

Morgan môžete nainštalovať ako závislosť v adresári projektu spustením tohto príkazu:

npm nainštalovať morgan

Tento kód ukazuje, ako používať Morgan v expresná aplikácia:

konšt vyjadriť = vyžadovať("expresné");
konšt morgan = vyžadovať("morgan");
konšt app = express();

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

app.get("/", (req, res) => {
znova.odoslať("Ahoj Svet!");
});

app.listen(3000, () => konzoly.log(„Aplikácia spustená“.));

Kód inicializuje Morgan pomocou dev formát. Keď zadáte požiadavku GET na koreňovú cestu (/), Morgan zaznamená podrobnosti tejto požiadavky do konzoly.

Napriek svojej jednoduchosti je Morgan výkonný protokolovací balík, ktorý poskytuje základné možnosti protokolovania požiadaviek pre aplikácie Node.js.

3. Pino

Pino je populárny a ľahký protokolovací balík pre aplikácie Node.js, ktorý sa môže pochváliť rýchlym výkonom a nízkou réžiou, ako je uvedené v ich referenčné hodnoty.

Pino podporuje viacero typov prepravy, ľahko sa rozšíri o vlastné prepravy. Jednou z kľúčových funkcií Pino je jeho schopnosť zaznamenávať správy vo formáte JSON, čo uľahčuje ich analýzu a analýzu.

Použitie Pino sa líši v závislosti od rámca Node.js; Pino môžete nainštalovať ako závislosť v adresári projektu Express spustením príkazu nižšie:

npm nainštalujte pino-http

Pre rôzne rámce skontrolujte Pino dokumentácia.

Tento blok kódu zobrazuje použitie Pina v expresnej aplikácii:

konšt vyjadriť = vyžadovať("expresné");
konšt app = express();
konšt pino = vyžadovať('pino-http')()

app.use (pino)

app.get("/", (req, res) => {
pino (req, res) // zaznamená požiadavku a odpoveď
req.log.info("koreňová cesta") // zaznamená ďalšie informácie
znova.odoslať("Ahoj Svet!");
});

app.listen(3000, () => konzoly.log(„Aplikácia spustená“.));

Tento kód inicializuje Pino a zaregistruje ho ako middleware. Keď zadáte požiadavku GET na koreňovú cestu (/), Pino zaznamená podrobnosti vašej požiadavky a jej odpoveď do konzoly.

4. Debug

Debug je protokolovací balík pre Node.js modelovaný podľa techniky ladenia jadra Node.js. Poskytuje ľahké riešenie protokolovania, ktoré vám umožňuje selektívne povoliť alebo zakázať protokolovanie bez úpravy kódu, čo uľahčuje ladenie a odstraňovanie problémov.

Ladenie vám tiež umožňuje nastaviť priestory názvov protokolov, ktoré vašim protokolom poskytujú hierarchickú štruktúru na základe komponentov a modulov vo vašej aplikácii, čo uľahčuje ich filtrovanie a vyhľadávanie. Okrem toho ponúka Debug rôzne úrovne protokolovania, ako sú chyby, upozornenia a informácie, ktoré môžete použiť na uprednostnenie a filtrovanie ich protokolov.

Debug môžete nainštalovať ako závislosť v adresári projektu pomocou tohto príkazu:

ladenie inštalácie npm

Tento kód ukazuje použitie ladenia v expresnej aplikácii:

konšt vyjadriť = vyžadovať('expresné');

// Importujte ladenie a vytvorte priestor názvov
konšt ladiť = vyžadovať('debug')('myapp: server');

konšt app = express();
konšt port = process.env. PORT || 3000;

app.get('/', (req, res) => {
ladiť ('Prijatá žiadosť o /');
znova.odoslať('Ahoj, svet!');
});

app.listen (port, () => {
ladiť (`Server počúva na porte ${port}`);
});

Kód vytvára menný priestor, myapp: server. Tento priestor názvov rozlíši protokoly súvisiace s vaším „server” modul od tých, ktoré sú spojené s inými modulmi s iným menným priestorom vo vašej aplikácii.

Spustite tento príkaz na spustenie ladenia:

DEBUG=moja aplikácia:* uzol server.js

Tento príkaz vyššie porovná každú správu denníka s priestorom názvov, ktorý začína na moja aplikácia:. Ak chcete vidieť iba protokoly súvisiace s vaším server modul, môžete nastaviť DEBUG prostredie premenné na myapp: server.

Ďalšou výhodou Debug je jeho kompatibilita s inými protokolovacími balíkmi, ako je Winston.

Výber logovacieho balíka

Výber protokolovacieho balíka je dôležitým rozhodnutím, ktoré môže výrazne ovplyvniť efektivitu a efektivitu vášho procesu ladenia. Je nevyhnutné zvážiť faktory, ako sú vlastnosti a možnosti balíka, jeho kompatibilita s vaším programovacím jazykom a vývojovým prostredím a jednoduchosť jeho používania a konfigurácia.

V konečnom dôsledku bude výber balíka protokolovania závisieť od konkrétnych potrieb a požiadaviek vášho projektu.