Simplistic logging for node.js with extensive TypeScript support.
Features:
- Customizable logging levels
- Display file path with line & column numbers (where the log function was called from)
- Can be used as flexibly as
console.log
orconsole.error
with 1 or more arguments
- To use default logging settings, just import
log
. - To create logging object with custom settings, call
createLoggers
. Export the created logging object for your project needs. - Start logging!
// /app/src/some-file.ts
import { log } from "jl-log";
log.debug("Wow, this is cool!");
// /app/src/log.ts
import { createLoggers } from "jl-log";
export default createLoggers({
showFile: false,
// Use Moment.js format to format the timestamp!
timestamp: "DD.MM.YYYY HH:mm:ss"
});
// /app/src/another-file.ts
import log from "./log";
log.debug("Wow, this is cool!");
import { createLoggers } from "jl-log";
// Use chalk to define log level colors!
import chalk from "chalk";
export default createLoggers({
levels: {
important: {
priority: 0,
color: chalk.bgRed.white,
text: "UH-OH"
},
notSoImportant: {
priority: 1,
color: chalk.yellow,
text: "meh"
},
silly: {
priority: 2,
color: chalk.green
}
},
showFile: true,
timestamp: "YYYY-MM-DD HH:mm:ss"
});
// /app/src/another-file.ts
import log from "./log";
log.important("Alarm!");
log.notSoImportant("Hello world");
log.silly("How do you do");
Returns an object containing a simple logging function for each given logging level.
-
config.levels (optional)
- Default levels:
-
fatal
(0) -
error
(1) -
warning
(2) -
info
(3) -
verbose
(4) -
debug
(5)
-
-
config.levels[level].priority (required)
- Number
- Defines the priority for logging level: the lower, more important the level is
-
config.levels[level].text (optional)
- String
- Log level text, shown in the prefix of the log message
- Default: log level key in upper case
-
config.levels[level].color (optional)
- Log level text color as a Chalk function
- Default:
chalk.bgBlack.bold.white
-
config.levels[level].stderr (optional)
- Boolean
- Should the log be directed to
stderr
instead ofstdout
? - Default:
false
- Default levels:
-
config.minLevel (optional)
- String (key of some log level)
- Minimum log level that should be logged
- Default: tries to find it from
process.env.MIN_LOG_LEVEL
, but if none is found, everything gets logged
-
config.timestamp (optional)
- Boolean or string
- If
false
, timestamp is not shown - If
true
, timestamp is shown withDate.prototype.toUTCString
- If string, timestamp is formatted with it using Moment.js
- Default:
true
, i.e. show timestamp withDate.prototype.toUTCString
-
config.showFile (optional)
- Boolean
- Should the file path be shown in the log message prefix?
- Default:
true
Default config:
{
{
levels: {
fatal: {
priority: 0,
color: chalk.bgRedBright.white,
stderr: true
},
error: {
priority: 1,
color: chalk.bgBlack.red,
stderr: true
},
warning: {
priority: 2,
color: chalk.bgBlack.yellow
},
info: {
priority: 3,
color: chalk.bgBlack.blue
},
verbose: {
priority: 4,
color: chalk.bgBlack.green
},
debug: {
priority: 5,
color: chalk.bgKeyword("dimgray").white
}
}
},
showFile: true,
timestamp: true,
minLevel: process.env.LOG_MIN_LEVEL || undefined
}
Example log messages with default config: