2.0.1 • Published 2 years ago

tilo v2.0.1

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

tilo

CI Build Status Coverage Status npm release license TypeScript

© 2021, Onur Yıldırım (@onury). MIT License.

Tiny logger with styles and levels for Node/TypeScript.

npm i tilo

Usage

// Node/CommonJS environments
const { Tilo } = require('tilo');

// With modern ES / transpilers
import { Tilo } from 'tilo';

// Usage:
const tilo = new Tilo({ level: 'debug' });
tilo.info('Output colorful logs with date/time and level info.');

Read the concise API reference.

Formatted Output

You can provide a custom function that returns a formatted string.

tilo.format = (info, chalk) => {
    const text = `${info.time} ${info.level.toUpperCase()}\t${info.text}`;
    return info.level === Tilo.Level.ERROR
        ? chalk.red(text)
        : chalk.white(text);
};
tilo.info('Custom formatted log...');
// —> 15:30:43 INFO   Custom formatted log...

Safely Stringified Logs

You can log safely strigified objects (i.e. with circular references).
Use #s() to stringify an individual or multiple values.
#sp() is for stringify with pretty format & indents.

tilo.info(tilo.s({ key: 'stringify' }));
tilo.warn(tilo.sp({ key: 'stringify pretty' }));

Configuration

Pass an options object to constructor, with the following properties:

Log Levels and Methods

There is also a #log() method which is INFO level by default. But you can pass the log level as the first argument to change that:

tilo.log('debug', 'message...');

Log Event

Tilo is also an EventEmitter. You can run custom functionallity on the log event.

tilo.on('log', logInfo => {
    if (logInfo.level === 'error' && /\bfatal/i.test(logInfo.text)) {
        // e.g. send email to admin
    }
});

Changelog

v2.0.1 (2023-03-20)

  • Handle edge-case inputs.

v2.0.0 (2020-01-31)

  • Drop support for Node v6.
  • Update dependencies to latest version.

v1.0.0 (2019-01-28)

  • initial release.

License

MIT.