logiks

1.0.1 • Public • Published

Logiks 📝 Build Status

Simple colored logger module with levels of logging and semantic output.

const logger = new Logiks({
    level: 'debug',
    colors: true,
});
 
logger.error('System', 'Component', 'Message')
 
> 2017-11-30 20:03:35 [System] [Component] Message

Signature semantics

Logger can take up to 4 different positional arguments-groupings:

logger.error(
    system: string,
    component: string',
    subCategory: string,
    message: string',
)

Note that message argument will appear anyway and if nth argument missed it means that n-1th argu,ent is message argument. Let assume we have code like bellow:

logger.special('Payments started');
 
logger.info('API', 'Payments', 'Performing payments');
/* ...*/
const response = {status: '200', confirmationHash:'d8e8fca2dc0f896fd7cb4cb'};
logger.info.json('API', 'Payments', 'v3.2', 'Payments was performed', response);

The output will be:

2018-09-02 02:55:27 Payments started!
2018-09-02 02:01:12 [API] [Payments] Performing payments
2018-09-02 02:01:39 [API] [Payments] (v3.2) Payments was performed
2018-09-02 02:01:39 ───┬────────────────────────────────────────────────────────────────────────
2018-09-02 02:01:39 0  │ {
2018-09-02 02:01:39 1  │   "status": "200",
2018-09-02 02:01:39 2  │   "confirmationHash": "d8e8fca2dc0f896fd7cb4cb"
2018-09-02 02:01:39 3  │ }
2018-09-02 02:01:39 ───┴────────────────────────────────────────────────────────────────────────

Groups

You can create logger instance already with grouping curried with:

  1. In configuration.Look at config groupings.
  2. With methods .withSystem, .withComponent and .withSubcat.

Config

Option Description Default
colors Should use colors false
level Log level. Look levels info
date Should every message line prefixed with date or not true
levels Levels description and priorities. Index in table is priority, and value is a array where 1st element is name of level and second is a coloring function.
[
    ['silly', chalk.white],
    ['debug', chalk.green],
    ['info', chalk.magenta],
    ['warning', chalk.yellow],
    ['error', chalk.red],
    ['special', chalk.cyan.underline],
    ['critical', chalk.red.underline.bold],
]

Groups

All is null by default

system
component (requires system>/td>
subCat (requires component>

json

json.maxLength Max length of lines in json message. JSON will be stringified counting this option. 64
json.maxRowLength Max line length in json message, if symbols count exceeded it will be striped by ... process.stdout.columns - 5
json.defaultColor Default coloring function of messages in json chalk.rgb(167, 101, 121)

Levels

Levels are prioritized entities to separate log messages by semantic. You can cover yout code with logging different depth and if you want to run your app on production mode you will not see debug log level. These are default log levels of Logiks:

  • silly: chalk.white
  • debug: chalk.green
  • info: chalk.magenta
  • warning: chalk.yellow
  • error: chalk.red
  • special: chalk.cyan.underline
  • critical: chalk.red.underline.bold

JSON

Every level logging function has .json property.

logger.warning.json('API', 'Payments', 'v3.2', 'Health check failed', {"reward":128.23,"instances":2,"availableApis":[{"host":"127.0.0.1","port":8888},{"host":"127.0.0.1","port":8889}],"healthCheck":false})

Will produce:

2018-09-01 10:58:16 [API] [Payments] (v3.2) Health check failed
2018-09-01 10:58:16 ───┬───────────────────────────────────────────────────────────────────
2018-09-01 10:58:16 0  │ {
2018-09-01 10:58:16 1  │   "reward": 128.23,
2018-09-01 10:58:16 2  │   "instances": 2,
2018-09-01 10:58:16 3  │   "availableApis": [
2018-09-01 10:58:16 4  │     { "host": "127.0.0.1", "port": 8888 },
2018-09-01 10:58:16 5  │     { "host": "127.0.0.1", "port": 8889 }
2018-09-01 10:58:16 6  │   ],
2018-09-01 10:58:16 7  │   "healthCheck": false
2018-09-01 10:58:16 8  │ }
2018-09-01 10:58:16 ───┴───────────────────────────────────────────────────────────────────

Package Sidebar

Install

npm i logiks

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

19.2 kB

Total Files

10

Last publish

Collaborators

  • zefirka