3.1.0 • Published 6 years ago

tiny-ts-logger v3.1.0

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

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.

LevelPriority
ALL0
TRACE0
LOG1
INFO2
WARN3
ERROR4
FATAL5
OFF5
3.1.0

6 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.0.0

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago