Source: common/logger.js

  1. 'use strict';
  2. /**
  3. * @module lib/common/logger
  4. * @summary Whiteflag API logging module
  5. * @description Module for logging events of the Whiteflag API
  6. * @tutorial modules
  7. * @tutorial logging
  8. */
  9. module.exports = {
  10. // Loglevel functions
  11. setLogLevel,
  12. getLogLevel,
  13. // Logging functions
  14. fatal,
  15. error,
  16. warn,
  17. info,
  18. debug,
  19. trace
  20. };
  21. // Module constants //
  22. /**
  23. * @constant {Object} levels
  24. * @description Defines the logging levels
  25. */
  26. const levels = {
  27. fatal: 1,
  28. error: 2,
  29. warn: 3,
  30. info: 4,
  31. debug: 5,
  32. trace: 6
  33. };
  34. // Module variables //
  35. let _logLevel = 4;
  36. // MAIN MODULE FUNCTIONS //
  37. /**
  38. * Sets new logging level
  39. * @function setLogLevel
  40. * @alias module:lib/common/logger.setLogLevel
  41. * @param {loglevel} loglevel logging level to be set
  42. * @param {function(Error, loglevel)} callback
  43. * @typedef {number} loglevel logging level
  44. */
  45. function setLogLevel(level, callback) {
  46. if (level > 0 && level <= 6) {
  47. _logLevel = level;
  48. } else {
  49. return callback(new Error(`Logging level ${level} does not exist`), _logLevel);
  50. }
  51. return callback(null, _logLevel);
  52. }
  53. /**
  54. * Returns current loglevel
  55. * @function getLogLevel
  56. * @alias module:lib/common/logger.getLogLevel
  57. * @param {function(Error, loglevel)} callback
  58. */
  59. function getLogLevel(callback) {
  60. return callback(null, _logLevel);
  61. }
  62. // MAIN LOGGER FUNCTIONS
  63. /**
  64. * Logs fatal events (level 1)
  65. * @function fatal
  66. * @alias module:lib/common/logger.fatal
  67. * @param {string} module name of the module that makes the log
  68. * @param {string} message the message to log
  69. */
  70. function fatal(module, message) {
  71. if (levels.fatal <= _logLevel) {
  72. return console.error(`[FATAL] ${module}: ${message}`);
  73. }
  74. }
  75. /**
  76. * Logs error events (level 2)
  77. * @function error
  78. * @alias module:lib/common/logger.error
  79. * @param {string} module name of the module that makes the log
  80. * @param {string} message the message to log
  81. */
  82. function error(module, message) {
  83. if (levels.error <= _logLevel) {
  84. return console.error(`[ERROR] ${module}: ${message}`);
  85. }
  86. }
  87. /**
  88. * Logs warning events (level 3)
  89. * @function warn
  90. * @alias module:lib/common/logger.warn
  91. * @param {string} module name of the module that makes the log
  92. * @param {string} message the message to log
  93. */
  94. function warn(module, message) {
  95. if (levels.warn <= _logLevel) {
  96. return console.warn(`[WARN ] ${module}: ${message}`);
  97. }
  98. }
  99. /**
  100. * Logs informational events (level 4)
  101. * @function info
  102. * @alias module:lib/common/logger.info
  103. * @param {string} module name of the module that makes the log
  104. * @param {string} message the message to log
  105. */
  106. function info(module, message) {
  107. if (levels.info <= _logLevel) {
  108. return console.info(`[INFO ] ${module}: ${message}`);
  109. }
  110. }
  111. /**
  112. * Logs debug events (level 5)
  113. * @function debug
  114. * @alias module:lib/common/logger.debug
  115. * @param {string} module name of the module that makes the log
  116. * @param {string} message the message to log
  117. */
  118. function debug(module, message) {
  119. if (levels.debug <= _logLevel) {
  120. return console.debug(`[DEBUG] ${module}: ${message}`);
  121. }
  122. }
  123. /**
  124. * Logs trace events (level 6)
  125. * @function trace
  126. * @alias module:lib/common/logger.trace
  127. * @param {string} module name of the module that makes the log
  128. * @param {string} message the message to log
  129. */
  130. function trace(module, message) {
  131. if (levels.trace <= _logLevel) {
  132. return console.debug(`[TRACE] ${module}: ${message}`);
  133. }
  134. }