For anyone interested with supporting this passion project, please check out Contributing.
An overly complicated yet functional logger.
For all systems, please use:
npm i logmatic --save-exact
As logmatic is currently in a very unstable state, many items may change in the future.
To get started, import the project into your file and initialise the logger:
const { Logger } = require('logmatic');
// OR
// import { Logger } from 'logmatic';
const log = new Logger("name");
For the default added levels, use the following:
Function Call | Format | Colour |
---|---|---|
log.trace() |
{time} [trace] {name} {...data} |
Cyan |
log.debug() |
{time} [debug] {name} {...data} |
Blue Background |
log.info() |
{time} [info] {name} {...data} |
Blue |
log.warn() |
{time} [warn] {name} {...data} |
Yellow |
log.error() |
{time} [error] {name} {...data} |
Red |
log.fatal() |
{time} [fatal] {name} {...data} |
Red Background |
For your custom levels, please see Levels below
The following section is expecting you have imported the class. It will then demonstrate how to set the option.
Whether console logging is enabled
Default: true
const log = new Logger("name", { console: { enabled: true }})
The minimum level to log. This corresponds with the position in the array the level is. See Levels.
Default: 1
const log = new Logger("name", { console: { logLevel: 1 }})
Whether to suppress warnings or errors emitted by the logger
Default: false
WARNING: This option is currently not in use.
const log = new Logger("name", { console: { supressWarnings: false }})
Whether to format and colourise any JSON output
Default: false
const log = new Logger("name", { console: { format: false }})
Whether to indent any JSON output
Default: 0
const log = new Logger("name", { console: { indent: 0 }})
WARNING: This option is currently not in use. Note: This module requires that several options are filled in tandem.
Whether file logging is enabled
Default: false
const log = new Logger("name", { files: { enabled: false }})
The log directory
In-depth: if path = /path/to/dir/
then logs will be stored as /path/to/dir/log.txt
etc.
Default null
const log = new Logger("name", { files: { path: null }})
How to name the files
Default: null
The type of file stored
Default: json
const log = new Logger("name", { files: { type: "json" }})
Whether web (POST) logging is enabled
Default: false
const log = new Logger("name", { web: { enabled: false }})
The URL to post to
Default: null
const log = new Logger("name", { web: { url: null }})
The data type sent
Default: json
const log = new Logger("name", { web: { type: "json" }})
How many logs to store before POSTing to avoid getting ratelimited
Default: 5
const log = new Logger("name", { web: { every: 5 }})
This logger allows you to add your own levels, following out format. Formatted the following:
const log = new Logger("name", { levels: { name: "level", colour:"red" }})
// **OR**
const log = new Logger("name", { levels: [{ name: "level", colour:"red" }]})
The colour should be derived from the package console-log-colors or from a slimmed list included in the types.
Also, you are able to overwrite existing functions. For example, you could overwrite the info logger level by redefining it.
The logger allows you to pass custom functions or callbacks to handle the logs on your own.
const function = (level: number, ...data: any[]) => {
return { level, data }
}
const log = new Logger("name", { funcs: function});
// **OR**
const log = new Logger("name", { funcs: [function]});