Loggning kan vara ett ovärderligt verktyg för att felsöka problem och analysera appanvändning. Dessa paket hjälper till att göra det till en enkel process.

Korrekt loggning är en kritisk aspekt av att bygga och underhålla funktionella webbapplikationer. Det kan hjälpa dig att spåra fel, diagnostisera prestandaproblem och förstå hur användare interagerar med din app.

Node.js har många loggningspaket som hjälper dig att skapa och hantera strukturerade loggar. Här kommer du att utforska de bästa loggningspaketen som för närvarande är tillgängliga i Node.js-ekosystemet och hur man använder dem.

1. Winston

Winston är ett Node.js-bibliotek som tillhandahåller flexibel loggningsfunktion, inklusive flera transporter. En "transport" är ett lagringsmedium för dina stockar.

Winston stöder konsol-, fil- och nätverkstransporter. Det betyder att du kan skriva ut dina loggar till konsolen, skriva dem till en fil eller skicka dem över ett nätverk. Med hjälp av Winstons loggningsnivåer kan du skapa anpassade transporter och filtrera loggar baserat på svårighetsgrad.

instagram viewer

Du kan installera Winston som ett beroende i din projektkatalog med hjälp av npm, JavaScript-pakethanteraren. Kör detta kommando:

npm installera winston

Kodblocket nedan visar hur man ställer in ett grundläggande loggningssystem med Winston. Du kan definiera loggar för olika platser och varierande svårighetsgrad.

konst winston = behöva("winston");

// Winston logger
konst logger = winston.createLogger({
nivå: 'info',
format: winston.format.json(),
defaultMeta: { service: "min tjänst" },
transporter: [
ny winston.transports. Trösta(),
ny winston.transports. Fil({ filnamn: 'felloggen', nivå: 'fel' }),
ny winston.transports. Fil({ filnamn: 'combined.log' })
]
});

logger.info("Hej, Winston!");
logger.warn("Varning: Något kan vara fel.");
logger.error('Ett fel uppstod.');

Denna kod konfigurerar en logger med tre transporter. Den första är en konsoltransport, som kommer att mata ut loggmeddelanden till konsolen. Den andra är en filtransport som kommer att skriva loggar med nivån "error" till en "error.log"-fil. Den tredje är en filtransport som kommer att skriva alla loggar till en "combined.log"-fil.

Loggern är inställd på att logga på "info"-nivån som standard och inkluderar ett standardmetadataobjekt med ett "service"-fält inställt på "min-tjänst".

Koden loggar sedan tre meddelanden med hjälp av loggern på nivåerna "info", "varna" respektive "fel". Dessa meddelanden kommer att matas ut till konsolen och lämpliga loggfiler enligt konfigurationen av transporterna.

2. Morgan

Morgan är en loggningsmellanvara för Node.js som tillhandahåller grundläggande förfrågningsloggningsfunktioner. Den är designad för att vara lätt och enkel att använda. Morgan arbetar genom att fånga upp HTTP-förfrågningar och logga relevant information, såsom förfrågningsmetod, URL, statuskod, etc.

En av de viktigaste fördelarna med Morgan är dess enkelhet. Du kan lägga till den i en Node.js-applikation med några rader kod, eftersom den inte kräver någon ytterligare konfiguration för att ställa in.

Morgan stöder flera loggningsformat, inklusive allmänning, kombinerad, kort, mycket liten, och dev format, så att du kan välja det som bäst passar dina behov.

Du kan installera Morgan som ett beroende i din projektkatalog genom att köra detta kommando:

npm installera morgan

Den här koden visar hur man använder Morgan i en Express-applikation:

konst uttrycka = behöva("uttrycka");
konst morgan = behöva("morgan");
konst app = express();

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

app.get("/", (req, res) => {
res.send("Hej världen!");
});

app.lyssna(3000, () => trösta.logga("Appen har startat".));

Koden initierar Morgan med hjälp av dev formatera. När du gör en GET-förfrågan till rotrutten (/), loggar Morgan detaljerna för den begäran till konsolen.

Trots sin enkelhet är Morgan ett kraftfullt loggningspaket som tillhandahåller viktiga förfrågningsloggningsfunktioner för Node.js-applikationer.

3. Pino

Pino är ett populärt och lätt loggningspaket för Node.js-applikationer som stoltserar med snabb prestanda och låg overhead, som anges i deras riktmärken.

Pino stöder flera transporttyper, lätt att utöka med anpassade transporter. En av Pinos nyckelfunktioner är dess förmåga att logga JSON-formaterade meddelanden, vilket gör dem lätta att analysera och analysera.

Användningen av Pino varierar beroende på Node.js-ramverket; du kan installera Pino som ett beroende i din Express-projektkatalog genom att köra kommandot nedan:

npm installera pino-http

För olika ramverk, kontrollera Pino dokumentation.

Detta kodblock visar Pinos användning i en Express-applikation:

konst uttrycka = behöva("uttrycka");
konst app = express();
konst pino = behöva('pino-http')()

app.use (pino)

app.get("/", (req, res) => {
pino (req, res) // loggar begäran och svar
req.log.info('rotväg') // loggar ytterligare information
res.send("Hej världen!");
});

app.lyssna(3000, () => trösta.logga("Appen har startat".));

Denna kod initierar Pino och registrerar den som middleware. När du gör en GET-förfrågan till rotrutten (/), loggar Pino detaljerna för din förfrågan och dess svar till konsolen.

4. Felsök

Debug är ett loggningspaket för Node.js som är modellerat efter Node.js cores felsökningsteknik. Den tillhandahåller en lätt loggningslösning som låter dig aktivera eller inaktivera loggning selektivt utan att ändra koden, vilket gör det enkelt att felsöka och felsöka problem.

Debug låter dig också ställa in loggnamnområden, som ger en hierarkisk struktur för dina loggar baserat på komponenterna och modulerna i din applikation, vilket gör det lättare att filtrera och söka i dem. Dessutom erbjuder Debug olika loggningsnivåer, såsom fel, varning och info, som du kan använda för att prioritera och filtrera deras loggar.

Du kan installera Debug som ett beroende i din projektkatalog med det här kommandot:

npm installera felsökning

Den här koden visar Debugs användning i en Express-applikation:

konst uttrycka = behöva('uttrycka');

// Importera felsökning och skapa namnutrymme
konst felsöka = behöva('felsöka')('minapp: server');

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

app.get('/', (req, res) => {
felsöka("Mottagna begäran om /");
res.send('Hej världen!');
});

app.listen (port, () => {
felsöka(`Server lyssnar på port ${port}`);
});

Koden skapar ett namnutrymme, myapp: server. Detta namnutrymme kommer att särskilja loggar relaterade till din "server”-modul från de som är kopplade till andra moduler med ett annat namnområde i din applikation.

Kör detta kommando för att starta felsökning:

DEBUG=minapp:* nodserver.js

Detta kommando ovan kommer att matcha alla loggmeddelanden med ett namnområde som börjar med minapp:. Om du bara vill se loggar relaterade till din server modul kan du ställa in DEBUGA miljövariabel till myapp: server.

En annan fördel med Debug är dess kompatibilitet med andra loggningspaket, som Winston.

Att välja ett loggningspaket

Att välja ett loggningspaket är ett viktigt beslut som avsevärt kan påverka effektiviteten och effektiviteten i din felsökningsprocess. Det är viktigt att ta hänsyn till faktorer som paketets funktioner och möjligheter kompatibilitet med ditt programmeringsspråk och utvecklingsmiljö, och dess användarvänlighet och konfiguration.

I slutändan kommer valet av loggningspaket att bero på ditt projekts specifika behov och krav.