Loggen kan een hulpmiddel van onschatbare waarde zijn voor het oplossen van problemen en het analyseren van app-gebruik. Deze pakketten helpen om het een eenvoudig proces te maken.

Correcte logboekregistratie is een cruciaal aspect bij het bouwen en onderhouden van functionele webapplicaties. Het kan u helpen fouten op te sporen, prestatieproblemen te diagnosticeren en te begrijpen hoe gebruikers omgaan met uw app.

Node.js heeft veel logboekpakketten waarmee u gestructureerde logboeken kunt maken en beheren. Hier verken je de beste logpakketten die momenteel beschikbaar zijn in het Node.js-ecosysteem en hoe je ze kunt gebruiken.

1. Winston

Winston is een Node.js-bibliotheek die flexibele logboekfunctionaliteit biedt, inclusief meerdere transporten. Een “transport” is een opslagmedium voor uw logboeken.

Winston ondersteunt console-, bestands- en netwerktransporten. Dit betekent dat u uw logboeken naar de console kunt afdrukken, naar een bestand kunt schrijven of via een netwerk kunt verzenden. Met behulp van de logboekniveaus van Winston kunt u aangepaste transporten maken en logboeken filteren op basis van ernst.

U kunt Winston als een afhankelijkheid in uw projectdirectory installeren met behulp van npm, de JavaScript-pakketbeheerder. Voer deze opdracht uit:

npm winston installeren

Het onderstaande codeblok laat zien hoe u met Winston een eenvoudig logboeksysteem instelt. U kunt logboeken definiëren voor verschillende locaties en verschillende niveaus van ernst.

const winst = vereisen("winston");

// Winston-logger
const logger = winston.createLogger({
niveau: 'informatie',
formaat: winston.format.json(),
standaardMeta: { dienst: 'mijn-service' },
vervoert: [
nieuw winston.transports. Troosten(),
nieuw winston.transports. Bestand({ bestandsnaam: 'error.log', niveau: 'fout' }),
nieuw winston.transports. Bestand({ bestandsnaam: 'gecombineerd.log' })
]
});

logger.info('Hallo Winston!');
logger.waarschuwen('Waarschuwing: er kan iets mis zijn.');
logger.fout('Er is een fout opgetreden.');

Deze code configureert een logger met drie transporten. De eerste is een consoletransport, dat logberichten naar de console zal sturen. De tweede is een bestandstransport dat logs met een "error"-niveau naar een "error.log"-bestand zal schrijven. De derde is een bestandstransport dat alle logs naar een "combined.log"-bestand zal schrijven.

De logger is standaard ingesteld om te loggen op het "info"-niveau en bevat een standaard metadata-object met een "service"-veld ingesteld op "mijn-service".

De code registreert vervolgens drie berichten met behulp van de logger op respectievelijk de niveaus "info", "waarschuwen" en "fout". Deze berichten worden uitgevoerd naar de console en de juiste logbestanden volgens de configuratie van de transporten.

2. Morgan

Morgan is een logging-middleware voor Node.js die basismogelijkheden voor het loggen van verzoeken biedt. Het is ontworpen om lichtgewicht en gebruiksvriendelijk te zijn. Morgan werkt door HTTP-verzoeken te onderscheppen en relevante informatie te loggen, zoals de aanvraagmethode, URL, statuscode, enz.

Een van de belangrijkste voordelen van Morgan is de eenvoud. U kunt het met een paar regels code toevoegen aan een Node.js-toepassing, omdat er geen extra configuratie voor nodig is.

Morgan ondersteunt meerdere logboekindelingen, waaronder de gewoon, gecombineerd, kort, klein, En ontwikkelaar formaten, zodat u er een kunt kiezen die het beste bij uw behoeften past.

U kunt Morgan als een afhankelijkheid in uw projectdirectory installeren door deze opdracht uit te voeren:

npm installeren morgan

Deze code laat zien hoe Morgan in te gebruiken een Express-applicatie:

const uitdrukken = vereisen("nadrukkelijk");
const morgan = vereisen("morgan");
const app = uitdrukken();

app.gebruik (morgan("ontwikkelaar"));

app.get("/", (req, res) => {
opnieuw verzenden("Hallo Wereld!");
});

app.luister(3000, () => troosten.log(`App gestart`));

De code initialiseert Morgan met behulp van de ontwikkelaar formaat. Wanneer u een GET-verzoek doet aan de rootroute (/), logt Morgan de details van dat verzoek in de console.

Ondanks zijn eenvoud is Morgan een krachtig logpakket dat essentiële mogelijkheden biedt voor het loggen van verzoeken voor Node.js-applicaties.

3. pino

Pino is een populair en lichtgewicht logboekpakket voor Node.js-applicaties met snelle prestaties en lage overhead, zoals vermeld in hun maatstaven.

Pino ondersteunt meerdere transporttypes, eenvoudig uit te breiden met transporten op maat. Een van de belangrijkste kenmerken van Pino is de mogelijkheid om JSON-geformatteerde berichten te loggen, waardoor ze gemakkelijk kunnen worden geparseerd en geanalyseerd.

Het gebruik van Pino varieert afhankelijk van het Node.js-framework; u kunt Pino installeren als een afhankelijkheid in uw Express-projectdirectory door de onderstaande opdracht uit te voeren:

npm pino-http installeren

Voor verschillende kaders, controleer de Pino-documentatie.

Dit codeblok toont het gebruik van Pino in een Express-toepassing:

const uitdrukken = vereisen("nadrukkelijk");
const app = uitdrukken();
const pin = vereisen('pino-http')()

app.gebruik (pino)

app.get("/", (req, res) => {
pino (req, res) // registreert verzoek en antwoord
verzoek.log.info('wortelroute') // registreert aanvullende informatie
opnieuw verzenden("Hallo Wereld!");
});

app.luister(3000, () => troosten.log(`App gestart`));

Deze code initialiseert Pino en registreert het als middleware. Wanneer u een GET-verzoek doet aan de rootroute (/), registreert Pino de details van uw verzoek en het antwoord op de console.

4. Debuggen

Debug is een logboekpakket voor Node.js gemodelleerd naar de foutopsporingstechniek van Node.js core. Het biedt een lichtgewicht oplossing voor logboekregistratie waarmee u logboekregistratie selectief kunt in- of uitschakelen zonder de code te wijzigen, waardoor het gemakkelijk is om problemen op te sporen en op te lossen.

Met Foutopsporing kunt u ook logboeknaamruimten instellen, die een hiërarchische structuur aan uw logboeken bieden op basis van de componenten en modules in uw toepassing, waardoor het gemakkelijker wordt om ze te filteren en te doorzoeken. Bovendien biedt Debug verschillende logboekniveaus, zoals fout, waarschuwing en info, die u kunt gebruiken om hun logboeken te prioriteren en te filteren.

U kunt Debug als een afhankelijkheid in uw projectdirectory installeren met deze opdracht:

npm installatie foutopsporing

Deze code toont het gebruik van Debug in een Express-toepassing:

const uitdrukken = vereisen('nadrukkelijk');

// Importeer foutopsporing en maak naamruimte
const debuggen = vereisen('foutopsporing')('mijnapp: server');

const app = uitdrukken();
const poort = proces.env. HAVEN || 3000;

app.get('/', (req, res) => {
debuggen ('Verzoek ontvangen voor /');
opnieuw verzenden('Hallo Wereld!');
});

app.listen (poort, () => {
debuggen ('Server luistert op poort ${poort}`);
});

De code creëert een naamruimte, mijnapp: server. Deze naamruimte zal logboeken onderscheiden die betrekking hebben op uw "server”-module van de modules die zijn gekoppeld aan andere modules met een andere naamruimte in uw toepassing.

Voer deze opdracht uit om foutopsporing te starten:

DEBUG=mijnapp:* knooppunt server.js

Deze opdracht hierboven komt overeen met elk logbericht met een naamruimte die begint met mijnapp:. Als u alleen logboeken wilt zien die betrekking hebben op uw server module, kunt u de DEBUGGEN omgevingsvariabele naar mijnapp: server.

Een ander voordeel van Debug is de compatibiliteit met andere logpakketten, zoals Winston.

Een logboekpakket kiezen

Het kiezen van een logboekpakket is een belangrijke beslissing die de efficiëntie en effectiviteit van uw foutopsporingsproces aanzienlijk kan beïnvloeden. Het is van essentieel belang om rekening te houden met factoren zoals de functies en mogelijkheden van het pakket, zijn compatibiliteit met uw programmeertaal en ontwikkelomgeving, en het gebruiksgemak en configuratie.

Uiteindelijk hangt de keuze van het logboekpakket af van de specifieke behoeften en vereisten van uw project.