OSDN Git Service

Added: logging package
[dvibrowser/jdisp.git] / src / js / include / jdisp / logging / BasicLogger.jsh
1 #ifndef _JDISP_LOGGING_BASICLOGGER_JS\r
2 #define _JDISP_LOGGING_BASICLOGGER_JS\r
3 \r
4 OOP_CLASS(BasicLogger) = function(id, max, f)\r
5 {\r
6   this.lines = new Array();\r
7   if (id) {\r
8     this.setTargetId(id);\r
9   }\r
10   if (max !== null) {\r
11     this.maxLines = Number(max);\r
12   } else {\r
13     this.maxLines = 25;\r
14   }\r
15   if (f !== null) {\r
16     this.setEnabled(f);\r
17   }\r
18 };\r
19 \r
20 OOP_FIELD(BasicLogger, maxLines) = 1024;\r
21 OOP_FIELD(BasicLogger, maxLineLength) = 4096;\r
22 OOP_FIELD(BasicLogger, digits) = 6;\r
23 OOP_FIELD(BasicLogger, lines) = null;\r
24 OOP_FIELD(BasicLogger, count) = 0;\r
25 OOP_FIELD(BasicLogger, targetId) = null;\r
26 OOP_FIELD(BasicLogger, targetNode) = null;\r
27 OOP_FIELD(BasicLogger, nodeFetched) = false;\r
28 OOP_FIELD(BasicLogger, enabled) = true;\r
29 OOP_METHOD(BasicLogger, setEnabled) = function (f)\r
30 {\r
31   f = Boolean(f);\r
32   this.enabled = f;\r
33 };\r
34 \r
35 OOP_METHOD(BasicLogger, setMaxLines) = function (n)\r
36 {\r
37   if (IS_NUMBER(n) && 0 <= n) {\r
38     this.maxLines = n;\r
39   }\r
40 };\r
41 \r
42 OOP_METHOD(BasicLogger, setTargetId) = function (id)\r
43 {\r
44   this.targetId = id;\r
45   this.nodeFetched = false;\r
46   this.update();\r
47 };\r
48 \r
49 OOP_METHOD(BasicLogger, append) = function (msg0)\r
50 {\r
51   if (!this.enabled) return;\r
52   var msg = String(msg0);\r
53   msg = msg.slice(0, this.maxLineLength);\r
54   this.count++;\r
55   var s = "[" + PROJECT_PREFIX.global.zeroPrefix(this.count, this.digits) + "] " +\r
56           PROJECT_PREFIX.global.escapeHtml(msg) ;\r
57   var lines = this.lines;\r
58   var max = this.maxLines;\r
59   lines.push(s);\r
60   while (lines.length > max) {\r
61     lines.shift();\r
62   }\r
63   this.update();\r
64 };\r
65 \r
66 OOP_METHOD(BasicLogger, update) = function ()\r
67 {\r
68   if (!this.enabled) return;\r
69   if (!this.nodeFetched) {\r
70     this.nodeFetched = true;\r
71     var n = PROJECT_PREFIX.domUtils.getNode(this.targetId);\r
72     this.targetNode = n;\r
73   }\r
74   var html = this.lines.join("<br />\r\n");\r
75   PROJECT_PREFIX.domUtils.setHtml(this.targetNode, html);\r
76 };\r
77 \r
78 #endif /* _JDISP_LOGGING_BASICLOGGER_JS */\r