# tiny-ts-logger

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

Latest version **3.1.0** (published 2018-05-01) · MIT license · 0 weekly downloads

## Install

```sh
npm install tiny-ts-logger
pnpm add tiny-ts-logger
yarn add tiny-ts-logger
bun add tiny-ts-logger
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.0 |
| Published | 2018-05-01 |
| First published | 2017-08-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 9.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 6 |
| Author | Klemen Oslaj |
| Maintainers | klemen.oslaj |
| Keywords | logger, typescript, ts-logger |

## Links

- npm: https://www.npmjs.com/package/tiny-ts-logger
- Repository: https://github.com/klemenoslaj/tiny-ts-logger
- Homepage: https://github.com/klemenoslaj/tiny-ts-logger#readme
- Issues: https://github.com/klemenoslaj/tiny-ts-logger/issues
- npm.io page: https://npm.io/package/tiny-ts-logger

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 3.1.0 (latest) — 2018-05-01
- 3.0.2 — 2018-04-28
- 3.0.1 — 2018-04-27
- 3.0.0 — 2018-04-27
- 2.0.0 — 2017-08-22
- 1.1.2 — 2017-08-14
- 1.1.1 — 2017-08-14
- 1.1.0 — 2017-08-14
- 1.0.0 — 2017-08-10

## README

# 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
```javascript
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

```javascript
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
```javascript
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
```javascript
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
```javascript
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
```javascript
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**      |

---
_Source: https://npm.io/package/tiny-ts-logger · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
