9 Node.js naplózókönyvtár Kipróbálhatja a jobb naplózást

Kínlódsz a kód hibakeresésével? Olyan naplózási megoldásokat keres, amelyek megkönnyíthetik a hibakeresést? Olvasson tovább, ha többet szeretne megtudni.

A szoftverfejlesztés több fázison megy keresztül: követelmények összegyűjtése, elemzése, kódolása, tesztelése és karbantartása. Mindezen fázisok közül a kódolási/fejlesztési fázis sok időt és erőfeszítést igényel. A szoftvermérnökök a szintaktikai hibákkal, a logikai hibákkal és a futásidejű hibákkal foglalkoznak. A szintaktikai hibákat a fordításkor azonosítják, és a kód nem felel meg a programozási nyelv szabályainak.

Másrészt a logikai és futási hibákat az Integrated Development Environment (IDE) nem tudja azonosítani, és gyakran nehéz hibakeresést és javítást végezni. A hibák feloldása időigényes folyamat, és sok hibakeresést igényel.

A hibakeresés egy olyan folyamat, amelynek során az ember megpróbálja megérteni, hogy a megírt kód miért nem működik a várt módon. Könnyen megoldható a probléma, ha ismerjük a hibát és a kód pontos sorait, ahol az előfordul. Ezért a naplózás nagyon hasznos a kód hibakereséséhez.

Mi az a naplózás?

A naplózás egy olyan technika, amellyel a program végrehajtása során rögzítik az üzeneteket. Csak azokat az üzeneteket kell naplózni, amelyek segíthetnek a hibakeresésben. Ezért rendkívül fontos tudni, hogy mikor kell naplóutasításokat hozzáadni a kódhoz. Ugyanilyen fontos a naplókimutatások megkülönböztetése is. A naplózásnak különböző szintjei vannak, például információ, figyelmeztetés, hiba, hibakeresés és részletes. A hiba- és figyelmeztető utasításokat a kivételek kezelésére használják.

A függvényekből visszaadott adatok, a tömbkezelés utáni eredmények, az API-kból lekért adatok stb. néhány példa az információs utasításokkal naplózható adatokra. A hibakeresési és részletes naplók a hibák részletes leírását szolgálják.

A hibakeresési napló információkat ad a verem nyomkövetéséről, a bemeneti-kimeneti paraméterekről stb. A „Verbose” nem olyan részletes, mint a „debug” napló, de felsorolja az összes előfordult eseményt. A naplók kiírásra kerülnek a konzolra, a fájlokra és a kimeneti adatfolyamra. A naplókezelő eszközök strukturált és formázott naplózáshoz használhatók.

Node.js naplózás

A Nodejs egy JavaScript futtatókörnyezet. A Node.js alkalmazások aszinkronok és nem blokkolóak, és adatintenzív és valós idejű rendszerekben használatosak. A legjobb módja annak, hogy többet tudjon meg a Node.js-ről, ha végignézi a Node.js oktatóanyagokat és annak dokumentációját. Naplózás szükséges a jobb teljesítmény, a hibaelhárítás és a hibakövetés érdekében. A Node.js-ba bejelentkezni a beépített console.log függvény segítségével lehet. Ezenkívül a debug funkció több csomaghoz is kapcsolódik, és hatékonyan használható.

A köztes szoftver a kérések és válaszok kezelésére szolgál. A köztes szoftver lehet egy alkalmazás vagy bármilyen más Javascript-keretrendszer. A köztes szoftverbe való bejelentkezés alkalmazásokon és útválasztókon keresztül történhet. Bármely Node.js naplózónak az npm vagy a yarn install parancsot kell használnia a naplózók telepítéséhez.

Az Npm a „Node Package Manager”, a YARN pedig a „Yet Another Resource Negotiator” rövidítése. A Yarn-t azonban előnyben részesítik az npm-mel szemben, mivel gyorsabb, és párhuzamosan telepíti a csomagokat.

Az alábbiakban felsorolunk néhányat a legjobb Node.js naplózók közül:

Pino

A Pino egy olyan könyvtár, amely az egyik legjobb naplózó a Node.js alkalmazásokhoz. Nyílt forráskódú, rendkívül gyors, és könnyen olvasható JSON formátumban naplózza az utasításokat. A Pino naplózási szintjei közül néhány: hibakeresés, figyelmeztetés, hiba és információs üzenetek. Egy Pino logger példány importálható a projektbe, és a console.log utasításokat logger.info utasításokra kell cserélni.

  Hogyan lehet elrejteni a laza üzenet-előnézeteket a lezárási képernyőn

A Pino telepítéséhez használja a következő parancsot:

$ npm install pino   

A generált naplók kidolgozottak és JSON formátumúak, kiemelve a napló sorszámát, a napló típusát, a naplózás időpontját stb. A Pino minimális többletköltséget okoz egy alkalmazásban, és rendkívül rugalmas a naplók feldolgozása során.

A Pino integrálható olyan webes keretrendszerekkel, mint a Hapi, Restify, Express stb. A Pino által generált naplók fájlokban is tárolhatók. Worker szálakat használ a működéshez, és kompatibilis a TypeScript-szel.

Winston

A Winston támogatja a különféle webes keretrendszerek naplózását, elsősorban a rugalmasságra és a bővíthetőségre összpontosítva. Többféle átvitelt támogat, és különféle fájlhelyeken képes tárolni a naplókat. A szállítások olyan helyek, ahol a naplóüzeneteket tárolják.

Néhány beépített átvitellel, mint például a Http, a Console, a File és a Stream, más átviteleket is támogat, mint például a Cloud Watch és a MongoDB. Különféle szinteken és formátumokban naplóz. A naplózási szintek a probléma súlyosságát jelzik.

A különböző naplózási szintek az alábbiak szerint láthatók:

{
  error: 0,
  warn: 1,
  info: 2,
  http: 3,
  verbose: 4,
  debug: 5,
  silly: 6
}

A naplókimeneti formátum testreszabható, szűrhető és kombinálható is. A naplók információkat tartalmaznak az időbélyegről, a naplóhoz társított címkékről, az előző naplóból eltelt ezredmásodpercekről stb.

Winston kezeli a kivételeket és a be nem tartott ígéreteket is. További szolgáltatásokat biztosít, mint például a lekérdezés futásidejű iktatása, a naplók streamelése stb. Először is telepíteni kell a Winstont. Ezután a szállítással együtt egy Winston konfigurációs objektum jön létre a napló tárolására. A createLogger() függvény segítségével létrejön egy naplózó objektum, és a naplóüzenet átadásra kerül.

Node-Bunyan

A Bunyan a node.js JSON formátumú gyors naplózására szolgál. A naplók megtekintéséhez CLI (Command Line Interface) eszközt is biztosít. Könnyű, és különféle futásidejű környezeteket támogat, például a Node.js, a Browserify, a WebPack és az NW.js. A naplók JSON formátuma tovább szépül a szép nyomtatási funkció segítségével. A naplók különböző szintekkel rendelkeznek, például végzetes, hiba, figyelmeztetés, információ, hibakeresés és nyomkövetés; mindegyikhez numerikus érték tartozik.

A példányhoz beállított szint feletti összes szint naplózásra kerül. A Bunyan stream egy olyan hely, ahol a kimenetek naplózódnak. Az alkalmazások részösszetevői a log.child() függvény segítségével naplózhatók. Az összes gyermeknaplózó egy adott szülőalkalmazáshoz van kötve. Az adatfolyam típusa lehet fájl, forgó fájl, nyers adat stb. Az adatfolyam meghatározásához használt kódminta az alábbiakban látható:

var bunyan = require('bunyan');
var log = bunyan.createLogger({
    name: "foo",
    streams: [
        {
            stream: process.stderr,
            level: "debug"
        },
        ...
    ]
});

A Bunyan a DTrace naplózást is támogatja. A DTrace naplózásban részt vevő próbák közé tartozik a log-trace, log-warn, log-error, log-info, log-debug és log-fatal. A Bunyan szerializálókat használ a naplók JSON formátumban történő előállításához. A sorosító függvények nem tesznek kivételt, és védekezőek.

Naplószint

A Loglevel a Javascript alkalmazásokba való bejelentkezéshez használatos. Ez is a Node.js egyik legjobb naplózója, mivel könnyű és egyszerű. Az adott szintet naplózza, és egyetlen, függőségek nélküli fájlt használ a naplózáshoz. Az alapértelmezett naplózási szint a „warn”. A naplókimenetek jól formázottak a sorszámokkal együtt. Néhány naplózási módszer a nyomkövetés, a hibakeresés, a figyelmeztetés, a hiba és az információ.

  A legjobb eszközök a hálózati műveletek kezeléséhez

Bármilyen környezetben ellenállnak a kudarcoknak. A getLogger() a logger objektum lekérésére használt módszer. Kombinálható más bővítményekkel is, hogy bővítse szolgáltatásait. Egyes beépülő modulok közé tartozik a loglevel-plugin-prefix, loglevel-plugin-remote, ServerSend és DEBUG. Az alábbiakban látható a beépülő modul, amellyel előtag üzeneteket adhat hozzá a naplózáshoz:

var originalFactory = log.methodFactory;
log.methodFactory = function (methodName, logLevel, loggerName) {
    var rawMethod = originalFactory(methodName, logLevel, loggerName);

    return function (message) {
        rawMethod("Newsflash: " + message);
    };
};
log.setLevel(log.getLevel()); // Be sure to call setLevel method in order to apply plugin

A buildek az npm run dist paranccsal, a tesztek pedig az npm test paranccsal futtathatók. A naplózási szint támogatja a Webjar, Bower és Atmosphere csomagokat. A Loglevel új verziója minden új szolgáltatás hozzáadásával megjelenik.

Jelzés

A Signale 19 naplózóból áll a Javascript alkalmazásokhoz. Támogatja a TypeScriptet és a hatályos naplózást. Időzítőkből áll, amelyek segítik az időbélyeg, az adatok és a fájlnév naplózását. A 19 naplózón kívül, mint az await, complete, fatal, fav, info stb., egyéni naplók is létrehozhatók.

Az egyéni naplók egy JSON-objektum és a naplózó adatait tartalmazó mezők meghatározásával jönnek létre. Interaktív naplózók is létrehozhatók. Ha egy interaktív naplózó igazra van állítva, az interaktív naplózók új értékei felülírják a régieket.

A Signale legjobb része a titkos vagy érzékeny információk kiszűrésének képessége. Egy tömbben több titok is tárolódik. Az addSecrets() és a clearSecrets() a titkok hozzáadására és a tömbből való törlésére szolgáló függvények. A Boostnote, a Docz, a Shower, a Taskbook és a Vant a Signale-t használja a naplózáshoz. Az API-k Signale-ből történő hívásának szintaxisa a következő:

signale.<logger>(message[,message]|messageObj|errorObj)

A Signale letöltéseinek száma több mint 1 millió a cikk írásakor.

Nyomkövető

A Tracer részletes naplózási üzenetek előállítására szolgál. A naplózó üzenetek időbélyegekből, fájlnevekből, sorszámokból és metódusnevekből állnak. Segítőcsomagok telepíthetők a kimeneti naplózási formátum testreszabásához. A segédcsomagok a következő paranccsal telepíthetők.

 npm install -dev tracer

A Tracer támogatja a fájl-, adatfolyam- és MongoDB-szállítást. Támogatja a színkonzol és a szűrési feltételeket a naplózásban. Kezdetben a nyomkövetőt az npm install segítségével kell telepíteni. Másodszor, létre kell hozni egy logger objektumot, és ki kell választani a konzol típusát. Ezután a különböző naplózási szintek vagy típusok megadhatók az objektum felett további naplózáshoz.

Testreszabott szűrők hozhatók létre szinkron függvények definiálásával a függvénytörzsben található üzleti logikával. Az olyan mikrosablonok, mint a tinytim, szintén használhatók a rendszernaplózáshoz.

Cabin.js

A kabin a node.js alkalmazások szerver- és kliensoldali naplózására szolgál. Ott használatos, ahol az érzékeny és kritikus információk elfedésére van szükség. Ez magában foglalja a hitelkártyaszámokat, a BasicAuth fejlécet, a sót, a jelszavakat, a CSRF-tokeneket és a bankszámlaszámokat. Az alábbi kódrészlet a Cabin.js használatával történő naplózást mutatja be.

const Cabin = require('cabin');
const cabin = new Cabin();
cabin.info('hello world');
cabin.error(new Error('oops!'));

Több mint 1600 mezőnévből áll. Követi a Bring Your Own Logger (BYOL) elvét is. Ez kompatibilissá teszi számos más naplózóval, mint például az Axe, Pino, Bunyan, Winston stb. Csökkenti a lemezek tárolási költségeit az automatikus adatfolyam és a Cabin pufferek miatt. Több platformon kompatibilis és könnyen hibakereshető.

  Keressen olcsó laptopokat kifejezetten játékra, programozásra vagy általános használatra

A szerveroldali naplózás köztes szoftver használatát igényli az útválasztáshoz és az automatikus kimeneti naplózáshoz. A böngészőoldali naplózáshoz XHR kérések és szkriptek szükségesek. Az Ax-et használja, amely metaadatokat jelenít meg, azaz adatokkal kapcsolatos adatokat, veremnyomokat és egyéb hibákat. A SHOW_STACK és a SHOW_META igaz vagy hamis értékre állított logikai változók a veremnyomok és metaadatok megjelenítéséhez vagy elrejtéséhez.

Npmlog

Az Npmlog az npm által használt naplózó alaptípusa. Néhány használt naplózási módszer a szint, rekord, maxRecordSize, prefixStyle, címsor és adatfolyam. Támogatja a színes naplózást is. A különböző naplózási szintek buta, bőbeszédű, info, figyelmeztetés, http és hiba. Az alábbiakban egy minta kódrészlet látható az npm napló használatához.

var log = require('npmlog')

// additional stuff ---------------------------+
// message ----------+                         |
// prefix ----+      |                         |
// level -+   |      |                         |
//        v   v      v                         v
    log.info('fyi', 'I have a kitty cat: %j', myKittyCat)

Ha naplózási szintként az „Infinity” van megadva, minden üzenet elnyomódik. Ha a „-Infinity” naplózási szintként van megadva, a naplózási üzenetek megjelenítésének lehetőségét engedélyezni kell a naplók megtekintéséhez.

Az események és üzenetobjektumok a naplózáshoz használatosak. Az előtag események használatakor előtag üzeneteket bocsát ki. A stílusobjektumok a naplók formázására szolgálnak, például szín hozzáadása a szöveghez és a háttérhez, betűstílus, például félkövér, dőlt, aláhúzott stb. Egyes npm naplócsomagok a brolog, npmlogger, npmdate log stb.

Roarr

A Roarr a Node.js naplózója, amely nem igényel inicializálást, és strukturált adatokat állít elő. CLI-vel és környezeti változókkal rendelkezik. Ez böngésző kompatibilis. Integrálható a Fastify, Fastify, Elastic Search stb. funkcióval. Meg tudja különböztetni az alkalmazáskódot és a függőségi kódot. Minden naplóüzenet kontextusból, üzenetből, sorozatból, időpontból és verzióból áll. A különböző naplózási szintek közé tartozik a nyomkövetés, a hibakeresés, az információ, a figyelmeztetés, a hiba és a végzetes. A Roarr naplózási módjára vonatkozó mintakódrészlet a következő:

import {
  ROARR,
} from 'roarr';

ROARR.write = (message) => {
  console.log(JSON.parse(message));
};

A hibák sorba állítása is elvégezhető, ami azt jelenti, hogy a hibás példány naplózható az objektum környezetével együtt. A Node.js és Roarr környezeti változói közül néhány a ROARR_LOG és a ROARR_STREAM. Az „adopt” egy olyan függvény, amelyet a node.js fájlban használnak a kontextus tulajdonságainak különböző szintekre történő továbbítására. A gyermekfunkciók köztes szoftverrel is használhatók naplózás közben.

Végső szavak

A naplózás egy módszer a különféle tevékenységek és események nyomon követésére egy program végrehajtása során. A naplózás létfontosságú szerepet játszik a kódhibakeresésben. Segít a kód olvashatóságának növelésében is. A Node.js egy nyílt forráskódú, JavaScript futásidejű környezet. A legjobb Node.js naplózók közé tartoznak a Pino, a Winston, a Bunyan, a Signale, a Tracer, az Npmlog stb. Minden naplózótípusnak megvannak a saját funkciói, például a profilalkotás, a szűrés, a streamelés és a szállítás.

Egyes naplózók támogatják a színes konzolokat, mások pedig érzékeny információk kezelésére alkalmasak. A részletes és formázott naplók segítenek leginkább a fejlesztőknek, miközben megpróbálják kijavítani a kódjukban lévő hibákat. A JSON formátumot általában előnyben részesítik a naplózáshoz, mert kulcs-érték párok formájában naplózza az adatokat, így felhasználóbarát.

A naplózók más alkalmazásokkal is integrálhatók, és több böngészővel is kompatibilisek. A használni kívánt fakitermelő típus kiválasztása előtt mindig tanácsos megvizsgálni az igényeket és alkalmazásokat, amelyeket épít.

Megnézheti azt is, hogyan telepítheti a Node.js-t és az NPM-et Windows és macOS rendszeren.