TypeScript:
Lokitus

Kuinka:

TypeScriptissä voit toteuttaa peruslokauksen helposti käyttäen konsolin metodeja tai integroida kehittyneemmän lokauksen kirjastojen, kuten winston tai pino, avulla. Tässä on perusesimerkki console.log-toiminnon käytöstä ja kehittyneempi esimerkki winston-kirjaston avulla.

// Perus konsolilokitus
console.log('Info: Sovelluksen käynnistäminen...');
console.error('Virhe: Tietojen noutaminen epäonnistui.');

// Esimerkkivastaus
// Info: Sovelluksen käynnistäminen...
// Virhe: Tietojen noutaminen epäonnistui.

Rakentavampaa lokitusta varten otetaan käyttöön winston:

import { createLogger, format, transports } from 'winston';

const logger = createLogger({
  level: 'info',
  format: format.combine(
    format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
    format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'combined.log' })
  ]
});

logger.info('Palvelin käynnistetty!');
logger.warn('Varoitus: Levytilaa vähän jäljellä.');
logger.error('Tietokantaan yhdistäminen epäonnistui.');

// Esimerkkisisältö tiedostossa combined.log
// 2023-01-20 14:42:07 info: Palvelin käynnistetty!
// 2023-01-20 14:42:09 warn: Varoitus: Levytilaa vähän jäljellä.
// 2023-01-20 14:42:12 error: Tietokantaan yhdistäminen epäonnistui.

Syväsukellus:

Lokituksen käsite tietotekniikan kontekstissa juontaa juurensa ohjelmoinnin varhaisiin päiviin, jossa termi itse on peräisin “lokikirjasta”, merenkulun kirjanpidon järjestelmästä. Historiallisesti ohjelmatapahtumat kirjattiin usein fyysisiin tulosteisiin tai terminaalin tulosteisiin, erityisesti pääteyhteysaikakaudella.

Päivämme tietotekniikassa on käytettävissä runsaasti työkaluja ja kirjastoja, jotka palvelevat erilaisia lokitustarpeita, yksinkertaisista tekstiedostoista monimutkaisiin lokituksen hallintajärjestelmiin. Vaihtoehtoja winston-kirjastolle ovat muun muassa pino, joka on tunnettu suorituskyvystään, ja Bunyan, joka perustuu JSON-muotoon. Työskennellessä Node.js:n kanssa lokituskirjastot tarjoavat usein virtamekanismeja ohjaamaan lokia eri kohteisiin, tukea lokitiedostojen kierrätykselle ja mukautettavia muotoilijoita.

Toteutuksen kannalta lokiviestit sisältävät yleensä aikaleiman, vakavuustason (kuten info, warning, error) sekä itse viestin. Hyvä lokikäytäntö suosittelee lokitasojen asianmukaista kategorisointia, arkaluontoisen tiedon välttämistä lokeissa sekä suorituskyvyn harkintaa korkea-liikenteisissä sovelluksissa.

Katso myös: