A naplózás felbecsülhetetlen értékű eszköz lehet a problémák hibaelhárításához és az alkalmazáshasználat elemzéséhez. Ezek a csomagok segítenek a folyamat egyszerűvé tételében.
A megfelelő naplózás kritikus szempont a működő webalkalmazások létrehozásában és karbantartásában. Segítségével nyomon követheti a hibákat, diagnosztizálhatja a teljesítményproblémákat, és megértheti, hogy a felhasználók hogyan lépnek kapcsolatba az alkalmazással.
A Node.js számos naplózási csomagot tartalmaz a strukturált naplók létrehozásához és kezeléséhez. Itt megtekintheti a Node.js ökoszisztémában jelenleg elérhető legnépszerűbb naplózási csomagokat és azok használatát.
1. Winston
A Winston egy Node.js könyvtár, amely rugalmas naplózási funkciókat biztosít, beleértve a többszörös átvitelt is. A „szállítás” egy tárolóeszköz a rönkök számára.
A Winston támogatja a konzol-, fájl- és hálózati átvitelt. Ez azt jelenti, hogy kinyomtathatja naplóit a konzolra, fájlba írhatja, vagy elküldheti hálózaton keresztül. A Winston naplózási szintjei segítségével egyéni szállításokat hozhat létre, és a súlyosság alapján szűrheti a naplókat.
A Winstont függőségként telepítheti a projektkönyvtárba a használatával npm, a JavaScript csomagkezelő. Futtassa ezt a parancsot:
npm telepítse a winstont
Az alábbi kódblokk bemutatja, hogyan kell beállítani egy alapvető naplózási rendszert a Winston használatával. Meghatározhat naplókat különböző helyekhez és különböző súlyossági szintekhez.
const winston = igényelnek("winston");
// Winston logger
const logger = winston.createLogger({
szint: "információ",
formátum: winston.format.json(),
alapértelmezettMeta: { szolgáltatás: "az én szolgáltatásom" },
szállít: [
új winston.szállítások. Konzol(),
új winston.szállítások. Fájl({ fájl név: "error.log", szint: 'hiba' }),
új winston.szállítások. Fájl({ fájl név: "combined.log" })
]
});
logger.info(– Helló, Winston!);
logger.warn('Figyelmeztetés: Valami baj lehet.');
logger.error('Hiba lépett fel.');
Ez a kód egy naplózót három szállítással konfigurál. Az első egy konzolátvitel, amely naplóüzeneteket küld a konzolra. A második egy fájlátvitel, amely "error" szintű naplókat ír egy "error.log" fájlba. A harmadik egy fájlátvitel, amely az összes naplót egy "combined.log" fájlba írja.
A naplózó alapértelmezés szerint az „információ” szintjén naplóz, és tartalmaz egy alapértelmezett metaadat-objektumot, amelynek „szolgáltatás” mezője „saját szolgáltatás”-ra van állítva.
A kód ezután három üzenetet naplóz a naplózó segítségével „info”, „warn” és „error” szinten. Ezek az üzenetek a konzolba és a megfelelő naplófájlokba kerülnek az átvitelek konfigurációjának megfelelően.
2. Morgan
A Morgan egy naplózási köztes szoftver a Node.js számára, amely alapvető kérésnaplózási képességeket biztosít. Úgy tervezték, hogy könnyű legyen és könnyen használható. A Morgan úgy működik, hogy elfogja a HTTP kéréseket, és naplózza a releváns információkat, például a kérés módszerét, URL-jét, állapotkódját stb.
A Morgan egyik legfontosabb előnye az egyszerűsége. Néhány sornyi kóddal hozzáadhatja egy Node.js alkalmazáshoz, mivel nincs szükség további konfigurációra a beállításhoz.
A Morgan többféle naplózási formátumot támogat, beleértve a gyakori, kombinált, rövid, apró, és dev formátumokat, így kiválaszthatja az igényeinek leginkább megfelelőt.
A Morgant függőségként telepítheti a projektkönyvtárába a következő parancs futtatásával:
npm install morgan
Ez a kód megmutatja, hogyan kell használni a Morgant egy Express alkalmazás:
const expressz = igényelnek("Expressz");
const morgan = igényelnek("morgan");
const app = express();app.use (morgan("fejlesztő"));
app.get("/", (req, res) => {
res.send("Helló Világ!");
});
app.listen(3000, () => konzol.log(`Alkalmazás elindítva`));
A kód inicializálja Morgant a dev formátum. Amikor GET kérést küld a gyökérútvonalhoz (/), a Morgan naplózza a kérés részleteit a konzolon.
Egyszerűsége ellenére a Morgan egy hatékony naplózási csomag, amely alapvető kérésnaplózási lehetőségeket biztosít a Node.js alkalmazások számára.
3. Pino
A Pino egy népszerű és könnyű naplózási csomag a Node.js alkalmazásokhoz, amely gyors teljesítménnyel és alacsony költséggel büszkélkedhet, amint azt a viszonyítási alapjaik.
A Pino többféle szállítási típust támogat, könnyen bővíthető egyedi szállításokkal. A Pino egyik legfontosabb funkciója a JSON-formátumú üzenetek naplózása, ami megkönnyíti azok elemzését és elemzését.
A Pino használata a Node.js keretrendszertől függően változik; az alábbi parancs futtatásával telepítheti a Pino-t függőségként az Express projektkönyvtárába:
npm install pino-http
Különböző keretek esetén ellenőrizze a Pino dokumentáció.
Ez a kódblokk a Pino használatát mutatja egy Express alkalmazásban:
const expressz = igényelnek("Expressz");
const app = express();
const pino = igényelnek("pino-http")()app.use (pino)
app.get("/", (req, res) => {
pino (req, res) // naplózza a kérést és a választ
req.log.info("gyökérút") // további információkat naplóz
res.send("Helló Világ!");
});
app.listen(3000, () => konzol.log(`Alkalmazás elindítva`));
Ez a kód inicializálja a Pino-t, és köztes szoftverként regisztrálja. Amikor GET-kérést küld a gyökérútvonalhoz (/), a Pino naplózza a kérés részleteit és válaszát a konzolon.
4. Hibakeresés
A Debug egy naplózási csomag a Node.js számára, amelyet a Node.js mag hibakeresési technikája alapján modelleztek. Könnyű naplózási megoldást kínál, amely lehetővé teszi a naplózás szelektív engedélyezését vagy letiltását a kód módosítása nélkül, megkönnyítve ezzel a hibakeresést és a problémák elhárítását.
A Debug lehetővé teszi naplónévterek beállítását is, amelyek hierarchikus struktúrát biztosítanak a naplóknak az alkalmazás összetevői és moduljai alapján, megkönnyítve a szűrést és a keresést. Ezenkívül a Debug különféle naplózási szinteket kínál, például hiba, figyelmeztetés és információ, amelyek segítségével rangsorolhatja és szűrheti a naplókat.
A Debug-ot függőségként telepítheti a projektkönyvtárba ezzel a paranccsal:
npm install debug
Ez a kód a Debug használatát mutatja egy Express alkalmazásban:
const expressz = igényelnek('Expressz');
// Hibakeresés importálása és névtér létrehozása
const hibakeresés = igényelnek("debug")("myapp: szerver");const app = express();
const port = process.env. PORT || 3000;app.get('/', (req, res) => {
debug(„Kérés érkezett /”);
res.send('Helló Világ!');
});
app.listen (port, () => {
debug(`Szerver figyel a porton ${port}`);
});
A kód névteret hoz létre, myapp: szerver. Ez a névtér megkülönbözteti a következőhöz kapcsolódó naplókatszerver” modult azok közül, amelyek az alkalmazásban más névtérrel rendelkező modulokhoz vannak társítva.
Futtassa ezt a parancsot a hibakeresés elindításához:
DEBUG=myapp:* node server.js
Ez a fenti parancs minden naplóüzenethez illeszkedik, amelynek névtere a következővel kezdődik myapp:. Ha csak az Önhöz kapcsolódó naplókat szeretné látni szerver modult, beállíthatja a DEBUG környezeti változóhoz myapp: szerver.
A Debug másik előnye, hogy kompatibilis más naplózási csomagokkal, például a Winstonnal.
Naplózási csomag kiválasztása
A naplózási csomag kiválasztása fontos döntés, amely jelentősen befolyásolhatja a hibakeresési folyamat hatékonyságát és eredményességét. Alapvetően fontos figyelembe venni olyan tényezőket, mint a csomag jellemzői és képességei, annak kompatibilitása a programozási nyelvvel és fejlesztői környezettel, valamint a könnyű használhatóság és konfigurációt.
Végső soron a naplózási csomag kiválasztása a projekt egyedi igényeitől és követelményeitől függ.