Logiks 📝
Simple colored logger module with levels of logging and semantic output.
const logger = level: 'debug' colors: true; logger > 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 n
th argument missed it means that n-1
th argu,ent is message argument. Let assume we have code like bellow:
logger; logger;/* ...*/const response = status: '200' confirmationHash:'d8e8fca2dc0f896fd7cb4cb';loggerinfo;
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:
- In configuration.Look at config groupings.
- 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], ] |
GroupsAll 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.whitedebug
: chalk.greeninfo
: chalk.magentawarning
: chalk.yellowerror
: chalk.redspecial
: chalk.cyan.underlinecritical
: chalk.red.underline.bold
JSON
Every level logging function has .json
property.
loggerwarning
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 ───┴───────────────────────────────────────────────────────────────────