A small 'live' web site which uses rest-api to represent a pseudo-termial-like interface.
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

168 lines
4.2KB

  1. const debug = require('debug');
  2. var ENABLE_STATE_LOG = true;
  3. var ENABLE_STATE_INFO = true;
  4. var ENABLE_STATE_DEBUG = true;
  5. var ENABLE_STATE_WARNING = true;
  6. var ENABLE_STATE_ERROR = true;
  7. var ENABLE_STATE_CRITICAL = true;
  8. var LOG_LIST = [];
  9. class Log {
  10. constructor(namespace){
  11. this.__ns = namespace;
  12. this.__d = debug(namespace);
  13. this.__d.enabled = ENABLE_STATE_LOG;
  14. this.__fnc = null;
  15. this.__enabled = ENABLE_STATE_LOG;
  16. this.__ienabled = ENABLE_STATE_INFO;
  17. this.__denabled = ENABLE_STATE_DEBUG;
  18. this.__wenabled = ENABLE_STATE_WARNING;
  19. this.__eenabled = ENABLE_STATE_ERROR;
  20. this.__cenabled = ENABLE_STATE_CRITICAL;
  21. LOG_LIST.push(this);
  22. }
  23. get namespace(){return this.__ns;}
  24. get enabled(){return this.__enabled;}
  25. set enabled(e){this.__enabled = (e === true);}
  26. get infoEnabled(){return this.__ienabled;}
  27. set infoEnabled(e){this.__ienabled = (e === true);}
  28. get debugEnabled(){return this.__denabled;}
  29. set debugEnabled(e){this.__denabled = (e === true);}
  30. get warningEnabled(){return this.__wenabled;}
  31. set warningEnabled(e){this.__wenabled = (e === true);}
  32. get errorEnabled(){return this.__eenabled;}
  33. set errorEnabled(e){this.__eenabled = (e === true);}
  34. get criticalEnabled(){return this.__cenabled;}
  35. set criticalEnabled(e){this.__cenabled = (e === true);}
  36. set logFunc(f){
  37. this.__fnc = f;
  38. this.__d.log = f;
  39. }
  40. log(){
  41. if (!ENABLE_STATE_LOG || !this.__enabled || arguments.length < 2){return;}
  42. var type = arguments[0];
  43. var args = Array.prototype.slice.call(arguments, 1);
  44. if (typeof(args[0]) !== 'string'){return;}
  45. switch(type){
  46. case "d":
  47. if (!ENABLE_STATE_DEBUG || !this.__denabled){return;}
  48. args[0] = "[ DEBUG ]: " + args[0];
  49. break;
  50. case "w":
  51. if (!ENABLE_STATE_WARNING || !this.__wenabled){return;}
  52. args[0] = "[ WARNING ]: " + args[0];
  53. break;
  54. case "e":
  55. if (!ENABLE_STATE_ERROR || !this.__eenabled){return;}
  56. args[0] = "[ ERROR ]: " + args[0];
  57. break;
  58. case "c":
  59. if (!ENABLE_STATE_CRITICAL || !this.__cenabled){return;}
  60. args[0] = "[ CRITICAL ]: " + args[0];
  61. break;
  62. case "i":
  63. default:
  64. if (!ENABLE_STATE_INFO || !this.__ienabled){return;}
  65. args[0] = "[ INFO ]: " + args[0];
  66. }
  67. this.__d.apply(this.__d, args);
  68. }
  69. info(){
  70. let args = Array.prototype.slice.call(arguments);
  71. args.splice(0, 0, 'i');
  72. this.log.apply(this, args);
  73. }
  74. debug(){
  75. let args = (Array.prototype.slice(arguments)).splice(0, 0, 'd');
  76. this.log.apply(this, args);
  77. }
  78. warning(){
  79. let args = (Array.prototype.slice(arguments)).splice(0, 0, 'w');
  80. this.log.apply(this, args);
  81. }
  82. error(){
  83. let args = (Array.prototype.slice(arguments)).splice(0, 0, 'e');
  84. this.log.apply(this, args);
  85. }
  86. critical(){
  87. let args = (Array.prototype.slice(arguments)).splice(0, 0, 'c');
  88. this.log.apply(this, args);
  89. }
  90. extend(ens){
  91. var nlog = new LOG(this.__ns + ":" + ens);
  92. nlog.enabled = this.__enabled;
  93. nlog.infoEnabled = this.__ienabled;
  94. nlog.debugEnabled = this.__denabled;
  95. nlog.warningEnabled = this.__wenabled;
  96. nlog.errorEnabled = this.__eenabled;
  97. nlog.criticalEnabled = this.__cenabled;
  98. if (this.__fnc !== null)
  99. nlog.logFunc = this.__fnc;
  100. return nlog;
  101. }
  102. }
  103. module.exports = {
  104. Log:Log,
  105. enabled: function(){
  106. if (arguments.length > 0)
  107. ENABLE_STATE_LOG = (arguments[0] === true);
  108. return ENABLE_STATE_LOG;
  109. },
  110. infoEnabled: function(){
  111. if (arguments.length > 0)
  112. ENABLE_STATE_INFO = (arguments[0] === true);
  113. return ENABLE_STATE_INFO;
  114. },
  115. debugEnabled: function(){
  116. if (arguments.length > 0)
  117. ENABLE_STATE_DEBUG = (arguments[0] === true);
  118. return ENABLE_STATE_DEBUG;
  119. },
  120. warningEnabled: function(){
  121. if (arguments.length > 0)
  122. ENABLE_STATE_WARNING = (arguments[0] === true);
  123. return ENABLE_STATE_WARNING;
  124. },
  125. errorEnabled: function(){
  126. if (arguments.length > 0)
  127. ENABLE_STATE_ERROR = (arguments[0] === true);
  128. return ENABLE_STATE_ERROR;
  129. },
  130. criticalEnabled: function(){
  131. if (arguments.length > 0)
  132. ENABLE_STATE_CRITICAL = (arguments[0] === true);
  133. return ENABLE_STATE_CRITICAL;
  134. }
  135. };