Guest User

Untitled

a guest
Jun 18th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. // Implementing logger class with Winston 3, using custom label and singleton pattern
  2. // logger/index.js
  3. const { createLogger, format, transports } = require("winston");
  4. const { combine, timestamp, colorize, label, printf } = format;
  5.  
  6. const myFormat = printf(info => {
  7. return `${info.timestamp} [${info.label}] ${info.level}: ${
  8. typeof info.message === "string"
  9. ? info.message
  10. : JSON.stringify(info.message, null, "\t")
  11. }`;
  12. });
  13.  
  14. const logger = (id = "main") => {
  15. if (this._logger && this._logger.id === id) return this._logger;
  16. this._logger = createLogger({
  17. format: combine(label({ label: id }), colorize(), timestamp(), myFormat),
  18. transports: [new transports.Console()],
  19. level: "debug"
  20. });
  21. this._logger.id = id;
  22. return this._logger;
  23. };
  24.  
  25. module.exports = logger;
  26.  
  27.  
  28. // usage
  29. const logger = require("../logger")("Custom-Label");
  30. logger.info("Info message");
  31. logger.error("Error message");
Add Comment
Please, Sign In to add comment