Protokolování může být neocenitelným nástrojem pro řešení problémů a analýzu používání aplikací. Tyto balíčky pomáhají zjednodušit proces.

Správné protokolování je kritickým aspektem vytváření a udržování funkčních webových aplikací. Může vám pomoci sledovat chyby, diagnostikovat problémy s výkonem a pochopit, jak uživatelé interagují s vaší aplikací.

Node.js má mnoho protokolovacích balíčků, které vám pomohou vytvářet a spravovat strukturované protokoly. Zde prozkoumáte nejlepší protokolovací balíčky aktuálně dostupné v ekosystému Node.js a jak je používat.

1. Winstone

Winston je knihovna Node.js, která poskytuje flexibilní funkce protokolování, včetně vícenásobných přenosů. „Přeprava“ je úložné médium pro vaše záznamy.

Winston podporuje konzolové, souborové a síťové transporty. To znamená, že své protokoly můžete vytisknout na konzoli, zapsat je do souboru nebo je odeslat přes síť. Pomocí úrovní protokolování Winston můžete vytvářet vlastní přenosy a filtrovat protokoly na základě závažnosti.

instagram viewer

Winston můžete nainstalovat jako závislost v adresáři projektu pomocí npm, správce balíčků JavaScript. Spusťte tento příkaz:

npm nainstalovat winston

Níže uvedený blok kódu ukazuje, jak nastavit základní systém protokolování pomocí Winston. Můžete definovat protokoly pro různá umístění a různé úrovně závažnosti.

konst winston = vyžadovat("winston");

// Logger Winston
konst logger = winston.createLogger({
úroveň: 'informace',
formát: winston.format.json(),
defaultMeta: { servis: 'moje služba' },
přepravy: [
Nový winston.přepravy. Řídicí panel(),
Nový winston.přepravy. Soubor({ název souboru: 'error.log', úroveň: 'chyba' }),
Nový winston.přepravy. Soubor({ název souboru: 'kombinovaný.log' })
]
});

logger.info("Ahoj, Winstone!");
logger.warn("Varování: Něco může být špatně.");
logger.error('Vyskytla se chyba.');

Tento kód konfiguruje logger se třemi transporty. Prvním z nich je transport konzoly, který vygeneruje zprávy protokolu do konzoly. Druhým je přenos souboru, který zapíše protokoly s úrovní „chyba“ do souboru „error.log“. Třetí je přenos souboru, který zapíše všechny protokoly do souboru „combined.log“.

Logger je standardně nastaven na protokolování na úrovni „info“ a obsahuje výchozí objekt metadat s polem „service“ nastaveným na „my-service“.

Kód pak zaznamená tři zprávy pomocí loggeru na úrovních „informace“, „varování“ a „chyba“. Tyto zprávy budou odeslány na konzolu a příslušné soubory protokolu podle konfigurace transportů.

2. Morgan

Morgan je protokolovací middleware pro Node.js, který poskytuje základní možnosti protokolování požadavků. Je navržen tak, aby byl lehký a snadno se používal. Morgan funguje tak, že zachycuje požadavky HTTP a zaznamenává relevantní informace, jako je metoda požadavku, adresa URL, stavový kód atd.

Jednou z klíčových výhod Morgan je jeho jednoduchost. Můžete jej přidat do aplikace Node.js pomocí několika řádků kódu, protože nevyžaduje žádnou další konfiguraci k nastavení.

Morgan podporuje více formátů protokolování, včetně běžný, kombinovaný, krátký, drobný, a dev formátů, což vám umožní vybrat si ten, který nejlépe vyhovuje vašim potřebám.

Morgan můžete nainstalovat jako závislost v adresáři projektu spuštěním tohoto příkazu:

npm nainstalovat morgan

Tento kód ukazuje, jak používat Morgan v expresní aplikace:

konst vyjádřit = vyžadovat("vyjádřit");
konst morgan = vyžadovat("morgan");
konst app = express();

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

app.get("/", (req, res) => {
znovu.odeslat("Ahoj světe!");
});

app.listen(3000, () => řídicí panel.log(`Aplikace spuštěna`));

Kód inicializuje Morgan pomocí dev formát. Když zadáte požadavek GET na kořenovou cestu (/), Morgan zaznamená podrobnosti tohoto požadavku do konzole.

Navzdory své jednoduchosti je Morgan výkonný protokolovací balíček, který poskytuje základní možnosti protokolování požadavků pro aplikace Node.js.

3. Pino

Pino je oblíbený a lehký protokolovací balíček pro aplikace Node.js, který se může pochlubit rychlým výkonem a nízkou režií, jak je uvedeno v jejich benchmarky.

Pino podporuje více typů přeprav, snadno se rozšíří o vlastní přepravy. Jednou z klíčových funkcí Pino je jeho schopnost protokolovat zprávy ve formátu JSON, což usnadňuje jejich analýzu a analýzu.

Použití Pino se liší v závislosti na frameworku Node.js; Pino můžete nainstalovat jako závislost v adresáři projektu Express spuštěním příkazu níže:

npm nainstalovat pino-http

Pro různé rámce zkontrolujte Pino dokumentace.

Tento blok kódu ukazuje použití Pino v aplikaci Express:

konst vyjádřit = vyžadovat("vyjádřit");
konst app = express();
konst pino = vyžadovat('pino-http')()

app.use (pino)

app.get("/", (req, res) => {
pino (req, res) // zaznamená požadavek a odpověď
req.log.info('kořenová cesta') // zaznamenává další informace
znovu.odeslat("Ahoj světe!");
});

app.listen(3000, () => řídicí panel.log(`Aplikace spuštěna`));

Tento kód inicializuje Pino a registruje jej jako middleware. Když zadáte požadavek GET na kořenovou cestu (/), Pino zaznamená podrobnosti vašeho požadavku a jeho odpověď do konzole.

4. Ladit

Debug je protokolovací balíček pro Node.js modelovaný podle techniky ladění jádra Node.js. Poskytuje lehké řešení protokolování, které umožňuje selektivně povolit nebo zakázat protokolování bez úpravy kódu, což usnadňuje ladění a odstraňování problémů.

Ladění vám také umožňuje nastavit jmenné prostory protokolů, které poskytují hierarchickou strukturu protokolů na základě komponent a modulů ve vaší aplikaci, což usnadňuje jejich filtrování a vyhledávání. Kromě toho nabízí Debug různé úrovně protokolování, jako je chyba, varování a informace, které můžete použít k upřednostnění a filtrování jejich protokolů.

Debug můžete nainstalovat jako závislost v adresáři projektu pomocí tohoto příkazu:

ladění instalace npm

Tento kód ukazuje použití ladění v expresní aplikaci:

konst vyjádřit = vyžadovat('vyjádřit');

// Importujte ladění a vytvořte jmenný prostor
konst ladit = vyžadovat('ladit')('myapp: server');

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

app.get('/', (req, res) => {
ladit('Přijatý požadavek na /');
znovu.odeslat('Ahoj světe!');
});

app.listen (port, () => {
ladit(`Server naslouchá na portu ${port}`);
});

Kód vytváří jmenný prostor, myapp: server. Tento jmenný prostor rozliší protokoly související s vaším „server” od modulů spojených s jinými moduly s jiným jmenným prostorem ve vaší aplikaci.

Spusťte tento příkaz pro spuštění ladění:

DEBUG=moje aplikace:* uzel server.js

Tento příkaz výše porovná jakoukoli zprávu protokolu s jmenným prostorem, který začíná moje aplikace:. Pokud chcete vidět pouze protokoly související s vaším server modul, můžete nastavit LADIT proměnná prostředí k myapp: server.

Další výhodou Debug je jeho kompatibilita s jinými protokolovacími balíčky, jako je Winston.

Výběr logovacího balíčku

Výběr protokolovacího balíčku je důležité rozhodnutí, které může významně ovlivnit efektivitu a efektivitu vašeho procesu ladění. Je nezbytné vzít v úvahu faktory, jako jsou vlastnosti a možnosti balíčku, jeho kompatibilita s vaším programovacím jazykem a vývojovým prostředím a jeho snadné použití a konfigurace.

Nakonec bude výběr logovacího balíčku záviset na konkrétních potřebách a požadavcích vašeho projektu.