Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Implementing logger class with Winston 3, using custom label and singleton pattern
- // logger/index.js
- const { createLogger, format, transports } = require("winston");
- const { combine, timestamp, colorize, label, printf } = format;
- const myFormat = printf(info => {
- return `${info.timestamp} [${info.label}] ${info.level}: ${
- typeof info.message === "string"
- ? info.message
- : JSON.stringify(info.message, null, "\t")
- }`;
- });
- const logger = (id = "main") => {
- if (this._logger && this._logger.id === id) return this._logger;
- this._logger = createLogger({
- format: combine(label({ label: id }), colorize(), timestamp(), myFormat),
- transports: [new transports.Console()],
- level: "debug"
- });
- this._logger.id = id;
- return this._logger;
- };
- module.exports = logger;
- // usage
- const logger = require("../logger")("Custom-Label");
- logger.info("Info message");
- logger.error("Error message");
Add Comment
Please, Sign In to add comment