Aller au contenu

Logger

BasaltLogger

BasaltLogger est une classe qui vous permettra d'enregistrer des stratégies de log pour votre application ainsi de loguer des messages.

Ajout d'une strategie de log
import { BasaltLogger, ConsoleLoggerStrategy } from '@basalt-lab/basalt-logger';

const logger = new BasaltLogger();

logger.registerStrategy('console', new ConsoleLoggerStrategy());

logger.log('hello world');

node example.js[2023-11-21 00:00:00] LOG : hello world

Suppression d'une strategie specifique de log
import { BasaltLogger, ConsoleLoggerStrategy } from '@basalt-lab/basalt-logger';

const logger = new BasaltLogger();

logger.registerStrategy('console', new ConsoleLoggerStrategy());

logger.unregisterStrategy('console');

node example.js

Suppression de toutes les strategies de log
import { BasaltLogger, ConsoleLoggerStrategy } from '@basalt-lab/basalt-logger';

const logger = new BasaltLogger();

logger.registerStrategy('console', new ConsoleLoggerStrategy());

logger.clearStrategies();

node example.js

Création d'une strategie de log
import { appendFile } from 'fs/promises';
import { BasaltLogger, LoggerStrategy, LogLevels}  from '@basalt-lab/basalt-logger';

class FileLoggerStrategy implements LoggerStrategy {
        public log(level: LogLevels, date: Date, object: unknown): void {
        const prefixDate = `[${date.toISOString().replace(/T/, ' ').replace(/\..+/, '')}]`;
        const sanitizedObject: string = typeof object === 'string' ? object : JSON.stringify(object);
        const message = `${prefixDate} ${level} : ${sanitizedObject}`;
        await appendFile(this._path, `${message}\n`);
    }
}

const logger = new BasaltLogger();

logger.registerStrategy('file', new FileLoggerStrategy());
logger.log('Hello World');

node example.jscat test.log[2023-11-21 00:00:00] LOG : Hello World

Ajout de plusieurs strategies de log
import { BasaltLogger, ConsoleLoggerStrategy, FileLoggerStrategy}  from '@basalt-lab/basalt-logger';

const logger = new BasaltLogger();

logger.registerStrategies([
    ['console', new ConsoleLoggerStrategy()],
    ['file', new FileLoggerStrategy('log.txt')]
]);

logger.log('Hello World');

node example.js[2023-11-21 00:00:00] LOG : Hello Worldcat log.txt[2023-11-21 00:00:00] LOG : Hello World

Tout les niveaux de log
import { BasaltLogger, ConsoleLoggerStrategy }  from '@basalt-lab/basalt-logger';

const logger = new BasaltLogger();

logger.registerStrategy('console', new ConsoleLoggerStrategy());

logger.log('hello world');
logger.info('hello world');
logger.debug('hello world');
logger.warn('hello world');
logger.error('hello world');

node example.js[2023-11-21 00:00:00] LOG : hello world
[2023-11-21 00:00:00] INFO : hello world
[2023-11-21 00:00:00] DEBUG : hello world
[2023-11-21 00:00:00] WARN : hello world
[2023-11-21 00:00:00] ERROR : hello world

Log sur une strategie specifique
import { BasaltLogger, ConsoleLoggerStrategy, FileLoggerStrategy}  from '@basalt-lab/basalt-logger';

const logger = new BasaltLogger();

logger.registerStrategies([
    ['console', new ConsoleLoggerStrategy()],
    ['file', new FileLoggerStrategy('log.txt')]
]);

logger.log('console strategy', ['console']);
logger.log('file strategy', ['file']);
logger.log('console and file strategy', ['console', 'file']);
logger.log('all strategies');

node example.js[2023-11-21 00:00:00] LOG : console strategy
[2023-11-21 00:00:00] LOG : console and file strategy
[2023-11-21 00:00:00] LOG : all strategies
cat log.txt[2023-11-21 00:00:00] LOG : file strategy
[2023-11-21 00:00:00 LOG : console and file strategy
[2023-11-21 00:00:00 LOG : all strategies