tiny-ts-logger
TypeScript icon, indicating that this package has built-in type declarations

3.1.0 • Public • Published

tiny-ts-logger

TypeScript logger with the support of multiple modules at different log levels

Installation

npm install tiny-ts-logger
yarn add tiny-ts-logger

Usage

Using global logger

import { Logger } from 'tiny-ts-logger';

Logger.global.log('This is log message');
Logger.global.error('And this is error message');

Using module specific logger

import { Logger } from 'tiny-ts-logger';

const moduleLogger = Logger.create('moduleName');

moduleLogger.log('This is log message');
moduleLogger.error('And this is error message');

Adjusting global log level

import { Logger, LEVEL } from 'tiny-ts-logger';

const globalLogger = Logger.global;
const moduleLogger = Logger.create('moduleName');

Logger.setGlobalLevel(LEVEL.WARN);

globalLogger.log('This log message will be ignored! WARN > LOG');
moduleLogger.log('This log message will be ignored! WARN > LOG');

globalLogger.warn('This log message will be logged! WARN == WARN');
moduleLogger.error('This log message will be logged! WARN < ERROR');

Adjusting module log level

import { Logger, LEVEL } from 'tiny-ts-logger';

const globalLogger = Logger.global;
const moduleLogger = Logger.create('moduleName');

moduleLogger.setLevel(LEVEL.WARN);

globalLogger.log('This log message will be logged! Not affected by module level');
moduleLogger.log('This log message will be ignored! WARN > LOG');
moduleLogger.error('This log message will be logged! WARN == WARN');

Check if log will be ignored

import { Logger, LEVEL } from 'tiny-ts-logger';

const globalLogger = Logger.global;
const moduleLogger = Logger.create('moduleName');

moduleLogger.level(LEVEL.WARN);

if (!moduleLogger.isValid(LEVEL.LOG)) {
    // moduleLogger.log() will be ignored
}

Extensibility

import { Logger, consoleArgument } from 'tiny-ts-logger';

/**
 * This class demonstrates a simple derived class from base Logger
 */
class CustomLogger extends Logger {
    /**
     * Overriding the default name of global logger
     */
    public static get global(this: typeof Logger): Logger {
        return this.create('custom-global-name');
    }

    /**
     * Overriding the standard(empty) parse message,
     * that gets atached in front of every log message
     */
    public static parseMessage(moduleName: string, level: LEVEL, _logger: CustomLogger): string {
        return `[${moduleName}] - ${LEVEL[level]} - `;
    }

    /**
     * Overriding the standard method with a custom behavior
     */
    public log(...args: consoleArgument[]): void {
        // Now intentionally ignoring validity of log level
        this.makeLog(LEVEL.LOG, args);
    }

    /**
     * Overriding the standard isValid check to allow logging
     * of current active level only
     */
    public isValid(level: LEVEL): boolean {
        return level === this.level;
    }

    /**
     * Overriding the standard logging mechanism.
     * For LEVEL.FATAL we call alert() instead of console.error()
     */
    protected makeLog(level: LEVEL, args: consoleArgument[]): consoleArgument[] {
        const consoleArgs: consoleArgument[] = [this.parseMessage(level), ...args];

        switch (level) {
            case LEVEL.FATAL:
                alert(consoleArgs.join(', '));
                break;
            default:
                console[LEVEL[level].toLowerCase()](...consoleArgs);
        }

        return consoleArgs;
    }
}

Log levels

Log level will block all logs that have smaller priority than the specified level.

Level Priority
ALL 0
TRACE 0
LOG 1
INFO 2
WARN 3
ERROR 4
FATAL 5
OFF 5

Package Sidebar

Install

npm i tiny-ts-logger

Weekly Downloads

4

Version

3.1.0

License

MIT

Unpacked Size

9.96 kB

Total Files

5

Last publish

Collaborators

  • klemen.oslaj