Logger.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:7k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.logging.Logger");
  9. dojo.provide("dojo.logging.LogFilter");
  10. dojo.provide("dojo.logging.Record");
  11. dojo.provide("dojo.log");
  12. dojo.require("dojo.lang.common");
  13. dojo.require("dojo.lang.declare");
  14. dojo.logging.Record = function (logLevel, message) {
  15. this.level = logLevel;
  16. this.message = "";
  17. this.msgArgs = [];
  18. this.time = new Date();
  19. if (dojo.lang.isArray(message)) {
  20. if (message.length > 0 && dojo.lang.isString(message[0])) {
  21. this.message = message.shift();
  22. }
  23. this.msgArgs = message;
  24. } else {
  25. this.message = message;
  26. }
  27. };
  28. dojo.logging.LogFilter = function (loggerChain) {
  29. this.passChain = loggerChain || "";
  30. this.filter = function (record) {
  31. return true;
  32. };
  33. };
  34. dojo.logging.Logger = function () {
  35. this.cutOffLevel = 0;
  36. this.propagate = true;
  37. this.parent = null;
  38. this.data = [];
  39. this.filters = [];
  40. this.handlers = [];
  41. };
  42. dojo.extend(dojo.logging.Logger, {_argsToArr:function (args) {
  43. var ret = [];
  44. for (var x = 0; x < args.length; x++) {
  45. ret.push(args[x]);
  46. }
  47. return ret;
  48. }, setLevel:function (lvl) {
  49. this.cutOffLevel = parseInt(lvl);
  50. }, isEnabledFor:function (lvl) {
  51. return parseInt(lvl) >= this.cutOffLevel;
  52. }, getEffectiveLevel:function () {
  53. if ((this.cutOffLevel == 0) && (this.parent)) {
  54. return this.parent.getEffectiveLevel();
  55. }
  56. return this.cutOffLevel;
  57. }, addFilter:function (flt) {
  58. this.filters.push(flt);
  59. return this.filters.length - 1;
  60. }, removeFilterByIndex:function (fltIndex) {
  61. if (this.filters[fltIndex]) {
  62. delete this.filters[fltIndex];
  63. return true;
  64. }
  65. return false;
  66. }, removeFilter:function (fltRef) {
  67. for (var x = 0; x < this.filters.length; x++) {
  68. if (this.filters[x] === fltRef) {
  69. delete this.filters[x];
  70. return true;
  71. }
  72. }
  73. return false;
  74. }, removeAllFilters:function () {
  75. this.filters = [];
  76. }, filter:function (rec) {
  77. for (var x = 0; x < this.filters.length; x++) {
  78. if ((this.filters[x]["filter"]) && (!this.filters[x].filter(rec)) || (rec.level < this.cutOffLevel)) {
  79. return false;
  80. }
  81. }
  82. return true;
  83. }, addHandler:function (hdlr) {
  84. this.handlers.push(hdlr);
  85. return this.handlers.length - 1;
  86. }, handle:function (rec) {
  87. if ((!this.filter(rec)) || (rec.level < this.cutOffLevel)) {
  88. return false;
  89. }
  90. for (var x = 0; x < this.handlers.length; x++) {
  91. if (this.handlers[x]["handle"]) {
  92. this.handlers[x].handle(rec);
  93. }
  94. }
  95. return true;
  96. }, log:function (lvl, msg) {
  97. if ((this.propagate) && (this.parent) && (this.parent.rec.level >= this.cutOffLevel)) {
  98. this.parent.log(lvl, msg);
  99. return false;
  100. }
  101. this.handle(new dojo.logging.Record(lvl, msg));
  102. return true;
  103. }, debug:function (msg) {
  104. return this.logType("DEBUG", this._argsToArr(arguments));
  105. }, info:function (msg) {
  106. return this.logType("INFO", this._argsToArr(arguments));
  107. }, warning:function (msg) {
  108. return this.logType("WARNING", this._argsToArr(arguments));
  109. }, error:function (msg) {
  110. return this.logType("ERROR", this._argsToArr(arguments));
  111. }, critical:function (msg) {
  112. return this.logType("CRITICAL", this._argsToArr(arguments));
  113. }, exception:function (msg, e, squelch) {
  114. if (e) {
  115. var eparts = [e.name, (e.description || e.message)];
  116. if (e.fileName) {
  117. eparts.push(e.fileName);
  118. eparts.push("line " + e.lineNumber);
  119. }
  120. msg += " " + eparts.join(" : ");
  121. }
  122. this.logType("ERROR", msg);
  123. if (!squelch) {
  124. throw e;
  125. }
  126. }, logType:function (type, args) {
  127. return this.log.apply(this, [dojo.logging.log.getLevel(type), args]);
  128. }, warn:function () {
  129. this.warning.apply(this, arguments);
  130. }, err:function () {
  131. this.error.apply(this, arguments);
  132. }, crit:function () {
  133. this.critical.apply(this, arguments);
  134. }});
  135. dojo.logging.LogHandler = function (level) {
  136. this.cutOffLevel = (level) ? level : 0;
  137. this.formatter = null;
  138. this.data = [];
  139. this.filters = [];
  140. };
  141. dojo.lang.extend(dojo.logging.LogHandler, {setFormatter:function (formatter) {
  142. dojo.unimplemented("setFormatter");
  143. }, flush:function () {
  144. }, close:function () {
  145. }, handleError:function () {
  146. dojo.deprecated("dojo.logging.LogHandler.handleError", "use handle()", "0.6");
  147. }, handle:function (record) {
  148. if ((this.filter(record)) && (record.level >= this.cutOffLevel)) {
  149. this.emit(record);
  150. }
  151. }, emit:function (record) {
  152. dojo.unimplemented("emit");
  153. }});
  154. void (function () {
  155. var names = ["setLevel", "addFilter", "removeFilterByIndex", "removeFilter", "removeAllFilters", "filter"];
  156. var tgt = dojo.logging.LogHandler.prototype;
  157. var src = dojo.logging.Logger.prototype;
  158. for (var x = 0; x < names.length; x++) {
  159. tgt[names[x]] = src[names[x]];
  160. }
  161. })();
  162. dojo.logging.log = new dojo.logging.Logger();
  163. dojo.logging.log.levels = [{"name":"DEBUG", "level":1}, {"name":"INFO", "level":2}, {"name":"WARNING", "level":3}, {"name":"ERROR", "level":4}, {"name":"CRITICAL", "level":5}];
  164. dojo.logging.log.loggers = {};
  165. dojo.logging.log.getLogger = function (name) {
  166. if (!this.loggers[name]) {
  167. this.loggers[name] = new dojo.logging.Logger();
  168. this.loggers[name].parent = this;
  169. }
  170. return this.loggers[name];
  171. };
  172. dojo.logging.log.getLevelName = function (lvl) {
  173. for (var x = 0; x < this.levels.length; x++) {
  174. if (this.levels[x].level == lvl) {
  175. return this.levels[x].name;
  176. }
  177. }
  178. return null;
  179. };
  180. dojo.logging.log.getLevel = function (name) {
  181. for (var x = 0; x < this.levels.length; x++) {
  182. if (this.levels[x].name.toUpperCase() == name.toUpperCase()) {
  183. return this.levels[x].level;
  184. }
  185. }
  186. return null;
  187. };
  188. dojo.declare("dojo.logging.MemoryLogHandler", dojo.logging.LogHandler, {initializer:function (level, recordsToKeep, postType, postInterval) {
  189. dojo.logging.LogHandler.call(this, level);
  190. this.numRecords = (typeof djConfig["loggingNumRecords"] != "undefined") ? djConfig["loggingNumRecords"] : ((recordsToKeep) ? recordsToKeep : -1);
  191. this.postType = (typeof djConfig["loggingPostType"] != "undefined") ? djConfig["loggingPostType"] : (postType || -1);
  192. this.postInterval = (typeof djConfig["loggingPostInterval"] != "undefined") ? djConfig["loggingPostInterval"] : (postType || -1);
  193. }, emit:function (record) {
  194. if (!djConfig.isDebug) {
  195. return;
  196. }
  197. var logStr = String(dojo.log.getLevelName(record.level) + ": " + record.time.toLocaleTimeString()) + ": " + record.message;
  198. if (!dj_undef("println", dojo.hostenv)) {
  199. dojo.hostenv.println(logStr, record.msgArgs);
  200. }
  201. this.data.push(record);
  202. if (this.numRecords != -1) {
  203. while (this.data.length > this.numRecords) {
  204. this.data.shift();
  205. }
  206. }
  207. }});
  208. dojo.logging.logQueueHandler = new dojo.logging.MemoryLogHandler(0, 50, 0, 10000);
  209. dojo.logging.log.addHandler(dojo.logging.logQueueHandler);
  210. dojo.log = dojo.logging.log;