1. 1 : /* istanbul ignore next */
  2. 2 :
  3. 3 : /**
  4. 4 : * Class with a logger interface. Messages are only logged to console if
  5. 5 : * their log level is smaller or equal than the current log level.
  6. 6 : *
  7. 7 : * @author {@link https://github.com/Mugen87|Mugen87}
  8. 8 : */
  9. 9 : class Logger {
  10. 10 :
  11. 11 : /**
  12. 12 : * Sets the log level for the logger. Allow values are: *LOG*,
  13. 13 : * *WARN*, *ERROR*, *SILENT*. The default level is *WARN*. The constants
  14. 14 : * are accessible over the *Logger.LEVEL* namespace.
  15. 15 : *
  16. 16 : * @param {Number} level - The log level.
  17. 17 : */
  18. 18 : static setLevel( level ) {
  19. 19 :
  20. 20 : currentLevel = level;
  21. 21 :
  22. 22 : }
  23. 23 :
  24. 24 : /**
  25. 25 : * Logs a message with the level *LOG*.
  26. 26 : *
  27. 27 : * @param {...Any} args - The arguments to log.
  28. 28 : */
  29. 29 : static log( ...args ) {
  30. 30 :
  31. 31 : if ( currentLevel <= Logger.LEVEL.LOG ) console.log( ...args );
  32. 32 :
  33. 33 : }
  34. 34 :
  35. 35 : /**
  36. 36 : * Logs a message with the level *WARN*.
  37. 37 : *
  38. 38 : * @param {...Any} args - The arguments to log.
  39. 39 : */
  40. 40 : static warn( ...args ) {
  41. 41 :
  42. 42 : if ( currentLevel <= Logger.LEVEL.WARN ) console.warn( ...args );
  43. 43 :
  44. 44 : }
  45. 45 :
  46. 46 : /**
  47. 47 : * Logs a message with the level *ERROR*.
  48. 48 : *
  49. 49 : * @param {...Any} args - The arguments to log.
  50. 50 : */
  51. 51 : static error( ...args ) {
  52. 52 :
  53. 53 : if ( currentLevel <= Logger.LEVEL.ERROR ) console.error( ...args );
  54. 54 :
  55. 55 : }
  56. 56 :
  57. 57 : }
  58. 58 :
  59. 59 : Logger.LEVEL = Object.freeze( {
  60. 60 : LOG: 0,
  61. 61 : WARN: 1,
  62. 62 : ERROR: 2,
  63. 63 : SILENT: 3
  64. 64 : } );
  65. 65 :
  66. 66 : let currentLevel = Logger.LEVEL.WARN;
  67. 67 :
  68. 68 :
  69. 69 : export { Logger };