ariaNgLogService.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. (function () {
  2. 'use strict';
  3. angular.module('ariaNg').factory('ariaNgLogService', ['$log', 'ariaNgConstants', function ($log, ariaNgConstants) {
  4. var logLevels = {
  5. DEBUG: 1,
  6. INFO: 2,
  7. WARN: 3,
  8. ERROR: 4
  9. };
  10. var logIndex = 0;
  11. var enableDebugLog = false;
  12. var cachedDebugLogs = [];
  13. var createNewCacheLogItem = function (msg, level, obj) {
  14. return {
  15. id: ++logIndex,
  16. time: new Date(),
  17. level: level,
  18. content: msg,
  19. attachment: obj
  20. };
  21. };
  22. var pushLogToCache = function (msg, level, obj) {
  23. if (!enableDebugLog) {
  24. return;
  25. }
  26. if (cachedDebugLogs.length >= ariaNgConstants.cachedDebugLogsLimit) {
  27. cachedDebugLogs.shift();
  28. }
  29. cachedDebugLogs.push(createNewCacheLogItem(msg, level, obj));
  30. };
  31. return {
  32. setEnableDebugLog: function (value) {
  33. enableDebugLog = value;
  34. },
  35. compareLogLevel: function (level1, level2) {
  36. var level1Val = logLevels[level1];
  37. var level2Val = logLevels[level2];
  38. if (!level1Val) {
  39. level1Val = 0;
  40. }
  41. if (!level2Val) {
  42. level2Val = 0;
  43. }
  44. if (level1Val > level2Val) {
  45. return 1;
  46. } else if (level1Val < level2Val) {
  47. return -1;
  48. } else {
  49. return 0;
  50. }
  51. },
  52. debug: function (msg, obj) {
  53. if (enableDebugLog) {
  54. if (obj) {
  55. $log.debug('[AriaNg Debug]' + msg, obj);
  56. } else {
  57. $log.debug('[AriaNg Debug]' + msg);
  58. }
  59. pushLogToCache(msg, 'DEBUG', obj);
  60. }
  61. },
  62. info: function (msg, obj) {
  63. if (obj) {
  64. $log.info('[AriaNg Info]' + msg, obj);
  65. } else {
  66. $log.info('[AriaNg Info]' + msg);
  67. }
  68. pushLogToCache(msg, 'INFO', obj);
  69. },
  70. warn: function (msg, obj) {
  71. if (obj) {
  72. $log.warn('[AriaNg Warn]' + msg, obj);
  73. } else {
  74. $log.warn('[AriaNg Warn]' + msg);
  75. }
  76. pushLogToCache(msg, 'WARN', obj);
  77. },
  78. error: function (msg, obj) {
  79. if (obj) {
  80. $log.error('[AriaNg Error]' + msg, obj);
  81. } else {
  82. $log.error('[AriaNg Error]' + msg);
  83. }
  84. pushLogToCache(msg, 'ERROR', obj);
  85. },
  86. getDebugLogs: function () {
  87. if (enableDebugLog) {
  88. return cachedDebugLogs;
  89. } else {
  90. return [];
  91. }
  92. },
  93. clearDebugLogs: function () {
  94. logIndex = 0;
  95. cachedDebugLogs.length = 0;
  96. }
  97. };
  98. }]);
  99. }());