Commit 6fc87409f1b9e5cc4495f6411f9762023e6e1dec

Authored by sumatek
1 parent 180aaa4d
Exists in master

update structure

1 require('app-module-path').addPath(__dirname); 1 require('app-module-path').addPath(__dirname);
2 const express = require('express'); 2 const express = require('express');
3 const app = express(); 3 const app = express();
4 -const conf = require('utils/config');  
5 const utils = require('utils/utils'); 4 const utils = require('utils/utils');
6 -var log = require('./utils/log');  
7 -var constants = require('./utils/constants');  
8 -  
9 -var testObj = {one:1,two:2,three:3};  
10 -var testArray = [5,6];  
11 -var testObj2 = {test:{  
12 - lv2 : 10  
13 -}};  
14 -console.log(utils.testUnit(testObj,4,testArray,testObj2)); 5 +// const conf = require('utils/config');
  6 +// var log = require('./utils/log');
  7 +// var constants = require('./utils/constants');
  8 +
  9 +var core = require('./utils/core');
  10 +// var stats = core.stats;
  11 +var log = core.log;
  12 +var constants = core.constants;
  13 +var conf = core.config;
  14 +core.init(app);
  15 +//init
  16 +// app.use(function (req, res, next) {
  17 +// core.init(app);
  18 +// next();
  19 +// });
  20 +
15 // console.log(conf.get('redis.host')); 21 // console.log(conf.get('redis.host'));
16 22
17 // setup generate request-id middleware 23 // setup generate request-id middleware
@@ -124,7 +130,8 @@ app.use(bodyParser.json()); @@ -124,7 +130,8 @@ app.use(bodyParser.json());
124 // app.use(passport.session()); 130 // app.use(passport.session());
125 131
126 132
127 -var logg = require('./utils/commonlog').init(conf.get("configlog"),app); 133 +
  134 +// var logg = require('./utils/cores/commonlog').init(conf.get("configlog"),app);
128 app.use(function (req, res, next) { 135 app.use(function (req, res, next) {
129 // add generated request-id to session 136 // add generated request-id to session
130 //req.session.reqId = req.id; 137 //req.session.reqId = req.id;
controllers/preference/index.js
1 let express = require('express'); 1 let express = require('express');
2 let router = express.Router(); 2 let router = express.Router();
  3 +
  4 +//core
  5 +var core = require('../../utils/core');
  6 +var stats = core.stats;
  7 +var log = core.log;
  8 +var constants = core.constants;
  9 +
  10 +//utils
  11 +var utils = require("../../utils/utils")
3 let connection = require("../../utils/mongoDB") 12 let connection = require("../../utils/mongoDB")
4 -var utils = require('../../utils/utils');  
5 -var stats = require('../../utils/stats');  
6 -var log = require('../../utils/log');  
7 -var constants = require('../../utils/constants'); 13 +
  14 +
8 15
9 16
10 var allow = ['general','holiday','shift','service','job','specialist','room']; 17 var allow = ['general','holiday','shift','service','job','specialist','room'];
utils/commonlog.js
@@ -1,673 +0,0 @@ @@ -1,673 +0,0 @@
1 -const fs = require('fs');  
2 -const os = require("os");  
3 -const path = require("path");  
4 -let rfs = require('rotating-file-stream');  
5 -const mkdirp = require('mkdirp');  
6 -const onHeaders = require('on-headers');  
7 -  
8 -const dateFMT = 'yyyymmdd HH:MM:ss.l';  
9 -const dateFMT_SQL = 'yyyy-mm-dd HH:MM:ss.l';  
10 -const fileFMT = 'yyyymmddHHMMss';  
11 -const dateFormat = require('dateformat');  
12 -const sqlite3 = require('sqlite3').verbose();  
13 -process.env.pm_id = process.env.pm_id | '0';  
14 -let db;  
15 -//const db = new sqlite3.Database( path.resolve(__dirname, `statDB/stat_${process.env.pm_id}.db`) );  
16 -const cron = require('node-cron');  
17 -// import cron from 'node-cron';  
18 -  
19 -let conf = {};  
20 -conf.projectName = 'PROJECT_NAME';  
21 -  
22 -conf.log = {};  
23 -conf.log.time = null; //min  
24 -conf.log.size = null; //maxsize per file, k  
25 -conf.log.path = './appLogPath/';  
26 -conf.log.level = 'debug'; //debug,info,warn,error  
27 -conf.log.console = false;  
28 -conf.log.file = true;  
29 -  
30 -conf.summary = {};  
31 -conf.summary.time = 15;  
32 -conf.summary.size = null;  
33 -conf.summary.path = './summaryPath/';  
34 -conf.summary.console = false;  
35 -conf.summary.file = true;  
36 -  
37 -conf.detail = {};  
38 -conf.detail.time = 15;  
39 -conf.detail.size = null;  
40 -conf.detail.path = './detailPath/';  
41 -conf.detail.console = false;  
42 -conf.detail.file = true;  
43 -  
44 -conf.stat = {};  
45 -conf.stat.time = 15;  
46 -conf.stat.size = 15;  
47 -conf.stat.path = './statPath/';  
48 -conf.stat.mode = 0; //0 == file, 1== :memory:  
49 -conf.stat.pathDB = undefined; //optional, folder path DB  
50 -conf.stat.statInterval = 15;  
51 -conf.stat.console = false;  
52 -conf.stat.file = true;  
53 -// conf.stat.process = [{  
54 -// name:'stat_name_1',  
55 -// threshold: 10  
56 -// },{  
57 -// name:'stat_name_2',  
58 -// threshold: 10  
59 -// }];  
60 -// conf.alarm = {};  
61 -// conf.alarm.time = 15;  
62 -// conf.alarm.size = 15;  
63 -// conf.alarm.path = './alarmPath/';  
64 -// conf.alarm.console = false;  
65 -// conf.alarm.file = true;  
66 -  
67 -let log = {  
68 - initLog: false  
69 -}  
70 -  
71 -  
72 -  
73 -function getLogFileName(date, index) {  
74 - return os.hostname() + '_'  
75 - + conf.projectName  
76 - + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')  
77 - + '.log';  
78 -}  
79 -function getStatFileName(date, index) {  
80 - return os.hostname() + '_'  
81 - + conf.projectName  
82 - + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')  
83 - + '.' + process.env.pm_id  
84 - + '.stat';  
85 -}  
86 -function getSummaryFileName(date, index) {  
87 - return os.hostname() + '_'  
88 - + conf.projectName  
89 - + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')  
90 - + '.summary';  
91 -}  
92 -function getDetailFileName(date, index) {  
93 - return os.hostname() + '_'  
94 - + conf.projectName  
95 - + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')  
96 - + '.detail';  
97 -}  
98 -function getConf(type) {  
99 - if (type === 'app') return conf['log'];  
100 - else if (type === 'stt') return conf['stat'];  
101 - else if (type === 'smr') return conf['summary'];  
102 - else if (type === 'dtl') return conf['detail'];  
103 -}  
104 -function generator(type) {  
105 - return (time, index) => {  
106 - if (type === 'app') return getLogFileName(time, index);  
107 - else if (type === 'stt') return getStatFileName(time, index);  
108 - else if (type === 'smr') return getSummaryFileName(time, index);  
109 - else if (type === 'dtl') return getDetailFileName(time, index);  
110 - }  
111 -}  
112 -function createOpts(conf) {  
113 - let o = {  
114 - path: conf.path  
115 - };  
116 - if (conf.size) o.size = conf.size + 'K';  
117 - if (conf.time) o.interval = conf.time + 'm';  
118 - return o;  
119 -}  
120 -function createStream(type) {  
121 - let conf = getConf(type);  
122 - let stream = rfs(generator(type), createOpts(conf));  
123 - return stream;  
124 -}  
125 -  
126 -var streamTask = {  
127 - app: [],  
128 - stt: [],  
129 - smr: [],  
130 - dtl: []  
131 -};  
132 -  
133 -function toStr(txt) {  
134 - // console.log(txt + 'txt instanceof Object ' + (txt instanceof Object));  
135 - // console.log(txt + 'txt instanceof Array ' + (txt instanceof Array));  
136 -  
137 - if ( txt instanceof Error ) {  
138 - return txt.message + ', ' + txt.stack;  
139 - } else if ( txt instanceof Object ) {  
140 - return JSON.stringify(txt);  
141 - } else {  
142 - return txt;  
143 - }  
144 -}  
145 -  
146 -  
147 -function printTxtOrError( _txt ){  
148 - if (_txt instanceof Error) {  
149 - return _txt;  
150 - }else{  
151 - return _txt;  
152 - }  
153 -}  
154 -  
155 -function processApplog(lvlAppLog, ..._txt) {  
156 - let session;  
157 - let rtxt = '';  
158 - if (_txt instanceof Array) {  
159 - if (_txt.length > 1) {  
160 - //index0 == session, index1 == text  
161 - session = _txt[0];  
162 - rtxt = toStr(_txt[1])  
163 - for (let i = 2; i < _txt.length; i++) {  
164 - rtxt += ' ' + toStr(_txt[i]);  
165 - }  
166 - } else {  
167 - session = '';  
168 - rtxt = _txt[0];  
169 - }  
170 - } else {  
171 -  
172 - session = '';  
173 - rtxt = toStr(_txt);  
174 - }  
175 - return `${getDateTimeLogFormat(new Date())}|${session}|${lvlAppLog}|${rtxt}`;  
176 -}  
177 -  
178 -  
179 -function write(type, txt) {  
180 - for (const stream of streamTask[type]) {  
181 - stream.write(txt + '\r\n');  
182 - }  
183 -}  
184 -  
185 -function getDateTimeLogFormat(currentDates) {  
186 - var years = currentDates.getFullYear();  
187 - var months = currentDates.getMonth() + 1;  
188 - var day = currentDates.getDate();  
189 - var hours = currentDates.getHours();  
190 - var minutes = currentDates.getMinutes();  
191 - var second = currentDates.getSeconds();  
192 - var millisecs = currentDates.getMilliseconds();  
193 - var monthFormatted = months < 10 ? "0" + months : months;  
194 - var dayFormatted = day < 10 ? "0" + day : day;  
195 - var hourFormatted = hours < 10 ? "0" + hours : hours;  
196 - var minFormatted = minutes < 10 ? "0" + minutes : minutes;  
197 - var secFormatted = second < 10 ? "0" + second : second;  
198 - var milliFormatted = null;  
199 -  
200 - if (millisecs < 10) {  
201 - milliFormatted = "00" + millisecs;  
202 - }  
203 - else if (millisecs < 100) {  
204 - milliFormatted = "0" + millisecs;  
205 - }  
206 - else {  
207 - milliFormatted = millisecs;  
208 - }  
209 - var detail = '' + years + monthFormatted + dayFormatted + ' ' + hourFormatted + ':' + minFormatted + ':' + secFormatted + '.' + milliFormatted + '|' + os.hostname() + '|' + conf.projectName;  
210 - return detail;  
211 -}  
212 -  
213 -  
214 -  
215 -  
216 -  
217 -function initDB() {  
218 - if (conf.stat.mode === 0) {  
219 - db = new sqlite3.cached.Database(':memory:');  
220 -  
221 - } else if (conf.stat.mode === 1) {  
222 - if (!conf.stat.pathDB) {  
223 - conf.stat.pathDB = path.resolve(__dirname, 'statDB');  
224 - }  
225 - if (!fs.existsSync(conf.stat.pathDB)) {  
226 - fs.mkdirSync(conf.stat.pathDB);  
227 - }  
228 - db = new sqlite3.cached.Database(`${conf.stat.pathDB}/stat_${process.env.pm_id}.db`);  
229 - }  
230 -  
231 - db.serialize(function () {  
232 - db.run("CREATE TABLE IF NOT EXISTS stat (stat_time TEXT, stat_name TEXT);");  
233 - });  
234 -}  
235 -  
236 -function initLog() {  
237 - if (conf.log) {  
238 - if (conf.log.file) {  
239 - if (!fs.existsSync(conf.log.path)) {  
240 - //fs.mkdirSync(conf.log.path);  
241 - mkdirp.sync(conf.log.path);  
242 - }  
243 - streamTask['app'].push(createStream('app'));  
244 - }  
245 - if (conf.log.console) streamTask['app'].push(process.stdout);  
246 - }  
247 - if (conf.stat) {  
248 - if (conf.log.file){  
249 - if (!fs.existsSync(conf.stat.path)) {  
250 - //fs.mkdirSync(conf.stat.path);  
251 - mkdirp.sync(conf.stat.path);  
252 - }  
253 - streamTask['stt'].push(createStream('stt'));  
254 - }  
255 - if (conf.log.console) streamTask['stt'].push(process.stdout);  
256 - }  
257 - if (conf.summary) {  
258 - if (conf.log.file){  
259 - if (!fs.existsSync(conf.summary.path)) {  
260 - // fs.mkdirSync(conf.summary.path);  
261 - mkdirp.sync(conf.summary.path);  
262 - }  
263 - streamTask['smr'].push(createStream('smr'));  
264 - }  
265 - if (conf.log.console) streamTask['smr'].push(process.stdout);  
266 - }  
267 - if (conf.detail) {  
268 - if (conf.log.file){  
269 - if (!fs.existsSync(conf.detail.path)) {  
270 - // fs.mkdirSync(conf.detail.path);  
271 - mkdirp.sync(conf.detail.path);  
272 - }  
273 - streamTask['dtl'].push(createStream('dtl'));  
274 - }  
275 - if (conf.log.console) streamTask['dtl'].push(process.stdout);  
276 - }  
277 -}  
278 -  
279 -function addStat(stat_name) {  
280 - db.serialize(function () {  
281 - //db.run("CREATE TABLE lorem (info TEXT, xx TEXT)");  
282 - /*var stmt = db.prepare("INSERT INTO lorem VALUES (?)");  
283 - for (var i = 0; i < 10; i++) {  
284 - stmt.run("Ipsum " + i);  
285 - }  
286 - stmt.finalize();  
287 -  
288 - db.run("INSERT INTO stat(stat_time, stat_name) VALUES (?)", ['xx',stat_name], function() {  
289 - console.log( 'x' );  
290 - getStat();  
291 - });*/  
292 -  
293 - /*db.run("INSERT INTO stat VALUES (?,?)", [dateFormat(new Date(), dateFMT_SQL), stat_name], function() {  
294 - getStat();  
295 - });*/  
296 -  
297 - db.run("INSERT INTO stat VALUES (?,?)", [dateFormat(new Date(), dateFMT_SQL), stat_name]);  
298 -  
299 - /*db.run("INSERT INTO stat VALUES (DATETIME('now'), '"+stat_name+"')", function() {  
300 - console.log( 'x' );  
301 - getStat();  
302 - });*/  
303 -  
304 -  
305 - });  
306 -  
307 -}  
308 -  
309 -  
310 -  
311 -//var prevStatDateRange;  
312 -function fushStat() {  
313 - var end = new Date();  
314 - end.setMilliseconds(0);  
315 -  
316 - //var start = new Date(end.getTime());  
317 - //start.setMinutes(end.getMinutes() - conf.log.statTime);  
318 -  
319 - var en = dateFormat(end, dateFMT_SQL);  
320 - //var st = dateFormat(prevStatDateRange, dateFMT_SQL);  
321 -  
322 - //prevStatDateRange = end; //assign for next loop  
323 - //console.log(st + '|' + en);  
324 - //var path = getStatFileName(end);  
325 -  
326 - db.serialize(function () {  
327 - //var stream = fs.createWriteStream(path, { 'flags': 'a' });  
328 - write('stt', en);  
329 -  
330 - db.each("SELECT stat_name, count(stat_name) as count FROM stat WHERE stat_time < ? group by stat_name order by stat_time", [en], function (err, row) {  
331 - if (err) {  
332 - console.log(err);  
333 - return;  
334 - }  
335 - //console.log(path+' '+ row.stat_name + ' ' + row.count );  
336 - write('stt', row.stat_name + ' ' + row.count);  
337 - });  
338 -  
339 - db.run("DELETE FROM stat WHERE stat_time < ?", [en]);  
340 -  
341 - /*db.each("SELECT stat_name, count(stat_name) as count FROM stat WHERE stat_time BETWEEN ? AND ? group by stat_name order by stat_name", [st, en], function (err, row) {  
342 - if (err) {  
343 - console.log(err);  
344 - return;  
345 - }  
346 - //console.log(path+' '+ row.stat_name + ' ' + row.count );  
347 - write(end, 'stt', row.stat_name + ' ' + row.count, false);  
348 - });  
349 -  
350 - db.run("DELETE FROM stat WHERE stat_time BETWEEN ? AND ?", [st, en]);*/  
351 -  
352 - });  
353 -}  
354 -  
355 -function getIntervalTime(type) {  
356 - if (type === 'app') {  
357 - return conf.log.time;  
358 - } else if (type === 'stt') {  
359 - return conf.stat.time;  
360 - } else if (type === 'smr') {  
361 - return conf.summary.time;  
362 - } else if (type === 'dtl') {  
363 - return conf.detail.time;  
364 - }  
365 - return null;  
366 -}  
367 -  
368 -  
369 -  
370 -log.stat = function (stat_name) {  
371 - addStat(stat_name);  
372 -}  
373 -  
374 -log.debug = function (..._log) {  
375 - if (conf.log.level > 0) return;  
376 - write('app', processApplog('debug', ..._log));  
377 -}  
378 -  
379 -log.info = function (..._log) {  
380 - if (conf.log.level > 1) return;  
381 - write('app', processApplog('info', ..._log));  
382 -}  
383 -log.warn = function (..._log) {  
384 - if (conf.log.level > 2) return;  
385 - write('app', processApplog('warn', ..._log));  
386 -}  
387 -log.error = function (..._log) {  
388 - if (conf.log.level > 3) return;  
389 - write('app', processApplog('error', ..._log));  
390 -}  
391 -  
392 -log.detail = function (detailLog) {  
393 - write('dtl', detailLog);  
394 -}  
395 -  
396 -  
397 -// log.detail = function (session, scenario, identity) {  
398 -// var startTimeDate = new Date();  
399 -// var inputTime;  
400 -// var outputTime;  
401 -  
402 -// var detailLog = {  
403 -// Session: session,  
404 -// InitInvoke: '', //only equinox platform  
405 -// Scenario: scenario,  
406 -// Identity: identity,  
407 -// InputTimeStamp: null,  
408 -// Input: [],  
409 -// OutputTimeStamp: null,  
410 -// Output: [],  
411 -// ProcessingTime: null,  
412 -// addInputRequest: function (node, cmd, rawData, data) {  
413 -// this.addInput(node, cmd, 'REQ', rawData, data);  
414 -// },  
415 -// addInputResponse: function (node, cmd, rawData, data, resTime) {  
416 -// this.addInput(node, cmd, 'RES', rawData, data, resTime);  
417 -// },  
418 -// addInputResponseTimeout: function (node, cmd) {  
419 -// this.addInput(node, cmd, 'RES_TIMEOUT');  
420 -// },  
421 -// addInputResponseError: function (node, cmd) {  
422 -// this.addInput(node, cmd, 'RES_ERROR');  
423 -// },  
424 -// addInput: function (node, cmd, type, rawData, data, resTime) {  
425 -// inputTime = new Date();  
426 -// if (typeof resTime === 'number') {  
427 -// resTime = resTime.toLocaleString() + ' ms';  
428 -// }  
429 -// var input = {  
430 -// Invoke: null,  
431 -// Event: node + '.' + cmd,  
432 -// Type: type,  
433 -// RawData: rawData,  
434 -// Data: data,  
435 -// ResTime: resTime  
436 -// };  
437 -// this.Input.push(input);  
438 -// },  
439 -  
440 -// addOutputRequest: function (node, cmd, rawData, data) {  
441 -// this.addOutput(node, cmd, 'REQ', rawData, data);  
442 -// },  
443 -// addOutputResponse: function (node, cmd, rawData, data) {  
444 -// this.addOutput(node, cmd, 'RES', rawData, data);  
445 -// },  
446 -// addOutputRequestRetry: function (node, cmd, rawData, data, total, maxCount) {  
447 -// this.addOutput(node, cmd, ('REQ_RETRY_' + total + '/' + maxCount), rawData, data);  
448 -// },  
449 -// addOutput: function (node, cmd, type, rawData, data) {  
450 -// outputTime = new Date();  
451 -// var input = {  
452 -// Invoke: null,  
453 -// Event: node + '.' + cmd,  
454 -// Type: type,  
455 -// RawData: rawData,  
456 -// Data: data  
457 -// };  
458 -  
459 -// this.Output.push(input);  
460 -// },  
461 -  
462 -// end: function () {  
463 -// let currentTime = new Date();  
464 -// detailLog.ProcessingTime = new Date().getTime() - startTimeDate.getTime();  
465 -// detailLog.InputTimeStamp = dateFormat(inputTime, dateFMT);  
466 -// detailLog.OutputTimeStamp = dateFormat(outputTime, dateFMT);;  
467 -  
468 -// write('dtl', JSON.stringify(detailLog));  
469 -// startTimeDate = currentTime;  
470 -// detailLog._clr();  
471 -// },  
472 -  
473 -// _clr: function (){  
474 -// detailLog.ProcessingTime = null;  
475 -// detailLog.InputTimeStamp = null;  
476 -// detailLog.OutputTimeStamp= null;  
477 -// detailLog.Input=[];  
478 -// detailLog.Output=[];  
479 -// }  
480 -// }  
481 -  
482 -// return detailLog;  
483 -// }  
484 -  
485 -log.summary = function (session, cmd, identity) {  
486 - var now = new Date();  
487 -  
488 - var summaryLog = {  
489 - requestTime: now,  
490 - session: session,  
491 - initInvoke: '', //only equinox platform  
492 - cmd: cmd,  
493 - identity: identity,  
494 - /*resultCode: null,  
495 - resultDescription: null,*/  
496 - blockDetail: [],  
497 -  
498 - addSuccessBlock: function (node, cmd, resultCode, resultDesc) {  
499 - //this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ resultCode+'; '+resultDesc+'(1)]]');  
500 - addBlock(this.blockDetail, node, cmd, resultCode, resultDesc);  
501 - },  
502 -  
503 - addErrorBlock: function (node, cmd, resultCode, resultDesc) {  
504 - //this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ resultCode+'; '+resultDesc+'(1)]]');  
505 - addBlock(this.blockDetail, node, cmd, resultCode, resultDesc);  
506 - },  
507 -  
508 - end: function (resultCode, resultDescription) {  
509 - var endTime = new Date();  
510 -  
511 - var blockDetailTxt = '[';  
512 - for (var j = 0; j < this.blockDetail.length; j++) {  
513 - var i = this.blockDetail[j];  
514 - var aa = i.node + '; ' + i.cmd + '(' + i.count + '); [';  
515 -  
516 - for (var k = 0; k < i.result.length; k++) {  
517 - var bb = i.result[k].resultCode + '; ' + i.result[k].resultDesc + '(' + i.result[k].count + ')';  
518 -  
519 - if (k === i.result.length - 1) {  
520 - aa += bb;  
521 - } else {  
522 - aa += (bb + ', ');  
523 - }  
524 - }  
525 -  
526 - if (j === this.blockDetail.length - 1) {  
527 - aa += ']';  
528 - } else {  
529 - aa += '], ';  
530 - }  
531 - blockDetailTxt += aa;  
532 - }  
533 - blockDetailTxt += ']';  
534 -  
535 -  
536 - var txt = dateFormat(this.requestTime, dateFMT) + '|';  
537 - txt += this.session + '|';  
538 - txt += this.initInvoke + '|'  
539 - txt += this.cmd + '|'  
540 - txt += this.identity + '|'  
541 - txt += resultCode + '|'  
542 - txt += resultDescription + '|'  
543 - txt += blockDetailTxt + '|'  
544 - txt += dateFormat(endTime, dateFMT) + '|'  
545 - txt += (endTime.getTime() - this.requestTime.getTime());  
546 -  
547 - write('smr', txt);  
548 - }  
549 - };  
550 - return summaryLog;  
551 -}  
552 -  
553 -function addBlock(store, node, cmd, resultCode, resultDesc) {  
554 - var found = null;  
555 -  
556 - for (var i = 0; i < store.length; i++) {  
557 - if (store[i].node === node && store[i].cmd === cmd) {  
558 - found = store[i];  
559 - store[i].count++;  
560 - break;  
561 - }  
562 - }  
563 -  
564 - if (!found) {  
565 - var result = {  
566 - resultCode: resultCode,  
567 - resultDesc: resultDesc,  
568 - count: 1  
569 - }  
570 -  
571 - var b = {  
572 - node: node,  
573 - cmd: cmd,  
574 - count: 1,  
575 - result: [result]  
576 - }  
577 - store.push(b);  
578 -  
579 - } else {  
580 - var foundResult = false;  
581 - for (var j = 0; j < found.result.length; j++) {  
582 - if (found.result[j].resultCode === resultCode &&  
583 - found.result[j].resultDesc === resultDesc) {  
584 -  
585 - found.result[j].count++;  
586 - foundResult = true;  
587 - break;  
588 - }  
589 - }  
590 -  
591 - if (!foundResult) {  
592 - var result = {  
593 - resultCode: resultCode,  
594 - resultDesc: resultDesc,  
595 - count: 1  
596 - }  
597 - found.result.push(result);  
598 - }  
599 - }  
600 -}  
601 -  
602 -log.init = function (_conf, express) {  
603 - log.initLog = true;  
604 - if (_conf) {  
605 - conf = _conf;  
606 - }  
607 -  
608 -  
609 -  
610 - if (conf.log) {  
611 - if (conf.log.level === 'debug') {  
612 - conf.log.level = 0;  
613 - } else if (conf.log.level === 'info') {  
614 - conf.log.level = 1;  
615 - } else if (conf.log.level === 'warn') {  
616 - conf.log.level = 2;  
617 - } else if (conf.log.level === 'error') {  
618 - conf.log.level = 3;  
619 - } else {  
620 - conf.log.level = 4;  
621 - }  
622 -  
623 - //enable only debug  
624 - if (express && conf.log.level === 0) {  
625 - express.use(function (req, res, next) {  
626 - req._reqTimeForLog = Date.now();  
627 - let sid;  
628 - if(typeof log.sessionID === 'function'){  
629 - sid = log.sessionID(req, res);  
630 - }  
631 -  
632 - let txtLogReq = 'INCOMING|__Method=' +req.method  
633 - + ' __URL=' + req.url  
634 - + ' __Headers=' + JSON.stringify(req.headers )  
635 - //+ ' __Params=' + JSON.stringify(req.params )  
636 - + ' __Body=' + JSON.stringify(req.body );  
637 -  
638 - if(sid){  
639 - log.debug(sid, txtLogReq);  
640 - }else{  
641 - log.debug(txtLogReq);  
642 - }  
643 -  
644 - onHeaders(res, ()=>{  
645 - let txtLogRes = 'OUTGOING|__Statuscode=' + res.statusCode  
646 - + ' __Headers=' + JSON.stringify(res._headers )  
647 - + ' __Body=' + req.res.resBody  
648 - + ' __Restime=' + ( Date.now() - req._reqTimeForLog );  
649 -  
650 - if(sid){  
651 - log.debug(sid, txtLogRes);  
652 - }else{  
653 - log.debug(txtLogRes);  
654 - }  
655 - });  
656 - next();  
657 - });  
658 - }  
659 - }  
660 -  
661 - initLog();  
662 -  
663 - if (conf.stat) {  
664 - initDB();  
665 - cron.schedule('*/' + conf.stat.statInterval + ' * * * *', function () {  
666 - fushStat();  
667 - });  
668 - }  
669 - return log;  
670 -};  
671 -  
672 -module.exports = log;  
673 -// module.exports = commonLog();  
utils/config.js
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -  
2 -const nodeEnv = process.env.NODE_ENV || 'default';  
3 -  
4 -// setup config  
5 -const NodeJsonConfig = require('node-json-config');  
6 -const conf = new NodeJsonConfig('app.config.json');  
7 -  
8 -let defaultConfObj = conf.get('default');  
9 -// console.log('defaultConfObj');  
10 -// console.log(defaultConfObj);  
11 -  
12 -let envConfObj = conf.get(nodeEnv);  
13 -// console.log('envConfObj');  
14 -// console.log(envConfObj);  
15 -  
16 -let currentConfObj = Object.assign(defaultConfObj, envConfObj);  
17 -  
18 -// console.log('currentConfObj');  
19 -// console.log(currentConfObj);  
20 -  
21 -conf.put(nodeEnv, currentConfObj);  
22 -  
23 -conf.getOld = conf.get;  
24 -conf.get = function(configName) {  
25 - return conf.getOld(nodeEnv + '.' + configName);  
26 -};  
27 -  
28 -module.exports = conf;  
29 \ No newline at end of file 0 \ No newline at end of file
utils/constants.js
@@ -1,90 +0,0 @@ @@ -1,90 +0,0 @@
1 -module.exports = Object.freeze({  
2 - REQUEST: 'Request',  
3 - RESPONSE: 'Response',  
4 - SUCCESS: 'Success',  
5 - ERROR: 'Error',  
6 - FAIL: 'Fail',  
7 - URLKEYWORD : ["filter","offset","orderby","limit","fields"],  
8 - METHOD:{  
9 - GET : 'GET',  
10 - POST : 'POST',  
11 - PUT : 'PUT',  
12 - DELETE : 'DELETE'  
13 - },  
14 - RESPONSECONN:{  
15 - STATS:{  
16 - ETIMEDOUT:'ETIMEDOUT',  
17 - ECONNREFUSED : 'ECONNREFUSED',  
18 - ESOCKETTIMEDOUT : 'ESOCKETTIMEDOUT',  
19 - MISSING : 'Missing'  
20 - },  
21 - MESSAGE:{  
22 - ETIMEDOUT:{  
23 - resultCode : 'null',  
24 - resultDescription : 'Time out'  
25 - },  
26 - ECONNREFUSED:{  
27 - resultCode : 'null',  
28 - resultDescription : 'Reject'  
29 - },  
30 - ESOCKETTIMEDOUT:{  
31 - resultCode : 'null',  
32 - resultDescription : 'Time out'  
33 - },  
34 - EOTHERERROR:{  
35 - resultCode : 'null',  
36 - resultDescription : 'Error'  
37 - },  
38 - ERROR:{  
39 - resultCode : '50000',  
40 - resultDescription : 'System error'  
41 - },  
42 - SUCCESS:{  
43 - resultCode : '20000',  
44 - resultDescription : 'Success'  
45 - },  
46 - EXCEED:{  
47 - resultCode : '40302',  
48 - resultDescription : 'Exceed data allowances'  
49 - },  
50 - DBERROR:{  
51 - resultCode : '50001',  
52 - resultDescription : 'Database error'  
53 - },  
54 - SUCCESSWITHCON:{  
55 - resultCode : '20001',  
56 - resultDescription : 'Success with condition'  
57 - }  
58 - }  
59 - },  
60 - RESPONSERESULT:{  
61 - SUCCESS:{  
62 - resultCode : '20000',  
63 - resultDescription : 'Success'  
64 - },  
65 - MISSING_INVALID:{  
66 - resultCode : '40300',  
67 - resultDescription : 'Missing or invalid parameter'  
68 - },  
69 - DATA_NOT_FOUND:{  
70 - resultCode : '40401',  
71 - resultDescription : 'Data Not Found'  
72 - },  
73 - DATA_EXIST:{  
74 - resultCode : '40301',  
75 - resultDescription : 'Data Exist'  
76 - },  
77 - ERROR:{  
78 - resultCode : '50000',  
79 - resultDescription : 'System error'  
80 - },  
81 - DENIED:{  
82 - resultCode : '40100',  
83 - resultDescription : 'Access Denied'  
84 - },  
85 - UNKNOW:{  
86 - resultCode : '50060',  
87 - resultDescription : 'Unknown URL'  
88 - }  
89 - }  
90 -});  
91 \ No newline at end of file 0 \ No newline at end of file
utils/core.js 0 โ†’ 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +var log = require('./cores/log');
  2 +var stats = require('./cores/stats');
  3 +var constants = require('./cores/constants')
  4 +var config = require('./cores/config')
  5 +
  6 +var init = function(app)
  7 +{
  8 + require('./cores/commonlog').init(config.get("configlog"),app);
  9 +}
  10 +
  11 +
  12 +module.exports = {
  13 + log,
  14 + stats,
  15 + constants,
  16 + config,
  17 + init
  18 +}
0 \ No newline at end of file 19 \ No newline at end of file
utils/cores/commonlog.js 0 โ†’ 100644
@@ -0,0 +1,673 @@ @@ -0,0 +1,673 @@
  1 +const fs = require('fs');
  2 +const os = require("os");
  3 +const path = require("path");
  4 +let rfs = require('rotating-file-stream');
  5 +const mkdirp = require('mkdirp');
  6 +const onHeaders = require('on-headers');
  7 +
  8 +const dateFMT = 'yyyymmdd HH:MM:ss.l';
  9 +const dateFMT_SQL = 'yyyy-mm-dd HH:MM:ss.l';
  10 +const fileFMT = 'yyyymmddHHMMss';
  11 +const dateFormat = require('dateformat');
  12 +const sqlite3 = require('sqlite3').verbose();
  13 +process.env.pm_id = process.env.pm_id | '0';
  14 +let db;
  15 +//const db = new sqlite3.Database( path.resolve(__dirname, `statDB/stat_${process.env.pm_id}.db`) );
  16 +const cron = require('node-cron');
  17 +// import cron from 'node-cron';
  18 +
  19 +let conf = {};
  20 +conf.projectName = 'PROJECT_NAME';
  21 +
  22 +conf.log = {};
  23 +conf.log.time = null; //min
  24 +conf.log.size = null; //maxsize per file, k
  25 +conf.log.path = './appLogPath/';
  26 +conf.log.level = 'debug'; //debug,info,warn,error
  27 +conf.log.console = false;
  28 +conf.log.file = true;
  29 +
  30 +conf.summary = {};
  31 +conf.summary.time = 15;
  32 +conf.summary.size = null;
  33 +conf.summary.path = './summaryPath/';
  34 +conf.summary.console = false;
  35 +conf.summary.file = true;
  36 +
  37 +conf.detail = {};
  38 +conf.detail.time = 15;
  39 +conf.detail.size = null;
  40 +conf.detail.path = './detailPath/';
  41 +conf.detail.console = false;
  42 +conf.detail.file = true;
  43 +
  44 +conf.stat = {};
  45 +conf.stat.time = 15;
  46 +conf.stat.size = 15;
  47 +conf.stat.path = './statPath/';
  48 +conf.stat.mode = 0; //0 == file, 1== :memory:
  49 +conf.stat.pathDB = undefined; //optional, folder path DB
  50 +conf.stat.statInterval = 15;
  51 +conf.stat.console = false;
  52 +conf.stat.file = true;
  53 +// conf.stat.process = [{
  54 +// name:'stat_name_1',
  55 +// threshold: 10
  56 +// },{
  57 +// name:'stat_name_2',
  58 +// threshold: 10
  59 +// }];
  60 +// conf.alarm = {};
  61 +// conf.alarm.time = 15;
  62 +// conf.alarm.size = 15;
  63 +// conf.alarm.path = './alarmPath/';
  64 +// conf.alarm.console = false;
  65 +// conf.alarm.file = true;
  66 +
  67 +let log = {
  68 + initLog: false
  69 +}
  70 +
  71 +
  72 +
  73 +function getLogFileName(date, index) {
  74 + return os.hostname() + '_'
  75 + + conf.projectName
  76 + + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')
  77 + + '.log';
  78 +}
  79 +function getStatFileName(date, index) {
  80 + return os.hostname() + '_'
  81 + + conf.projectName
  82 + + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')
  83 + + '.' + process.env.pm_id
  84 + + '.stat';
  85 +}
  86 +function getSummaryFileName(date, index) {
  87 + return os.hostname() + '_'
  88 + + conf.projectName
  89 + + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')
  90 + + '.summary';
  91 +}
  92 +function getDetailFileName(date, index) {
  93 + return os.hostname() + '_'
  94 + + conf.projectName
  95 + + (date ? ('_' + dateFormat(date, fileFMT) + '.' + index) : '')
  96 + + '.detail';
  97 +}
  98 +function getConf(type) {
  99 + if (type === 'app') return conf['log'];
  100 + else if (type === 'stt') return conf['stat'];
  101 + else if (type === 'smr') return conf['summary'];
  102 + else if (type === 'dtl') return conf['detail'];
  103 +}
  104 +function generator(type) {
  105 + return (time, index) => {
  106 + if (type === 'app') return getLogFileName(time, index);
  107 + else if (type === 'stt') return getStatFileName(time, index);
  108 + else if (type === 'smr') return getSummaryFileName(time, index);
  109 + else if (type === 'dtl') return getDetailFileName(time, index);
  110 + }
  111 +}
  112 +function createOpts(conf) {
  113 + let o = {
  114 + path: conf.path
  115 + };
  116 + if (conf.size) o.size = conf.size + 'K';
  117 + if (conf.time) o.interval = conf.time + 'm';
  118 + return o;
  119 +}
  120 +function createStream(type) {
  121 + let conf = getConf(type);
  122 + let stream = rfs(generator(type), createOpts(conf));
  123 + return stream;
  124 +}
  125 +
  126 +var streamTask = {
  127 + app: [],
  128 + stt: [],
  129 + smr: [],
  130 + dtl: []
  131 +};
  132 +
  133 +function toStr(txt) {
  134 + // console.log(txt + 'txt instanceof Object ' + (txt instanceof Object));
  135 + // console.log(txt + 'txt instanceof Array ' + (txt instanceof Array));
  136 +
  137 + if ( txt instanceof Error ) {
  138 + return txt.message + ', ' + txt.stack;
  139 + } else if ( txt instanceof Object ) {
  140 + return JSON.stringify(txt);
  141 + } else {
  142 + return txt;
  143 + }
  144 +}
  145 +
  146 +
  147 +function printTxtOrError( _txt ){
  148 + if (_txt instanceof Error) {
  149 + return _txt;
  150 + }else{
  151 + return _txt;
  152 + }
  153 +}
  154 +
  155 +function processApplog(lvlAppLog, ..._txt) {
  156 + let session;
  157 + let rtxt = '';
  158 + if (_txt instanceof Array) {
  159 + if (_txt.length > 1) {
  160 + //index0 == session, index1 == text
  161 + session = _txt[0];
  162 + rtxt = toStr(_txt[1])
  163 + for (let i = 2; i < _txt.length; i++) {
  164 + rtxt += ' ' + toStr(_txt[i]);
  165 + }
  166 + } else {
  167 + session = '';
  168 + rtxt = _txt[0];
  169 + }
  170 + } else {
  171 +
  172 + session = '';
  173 + rtxt = toStr(_txt);
  174 + }
  175 + return `${getDateTimeLogFormat(new Date())}|${session}|${lvlAppLog}|${rtxt}`;
  176 +}
  177 +
  178 +
  179 +function write(type, txt) {
  180 + for (const stream of streamTask[type]) {
  181 + stream.write(txt + '\r\n');
  182 + }
  183 +}
  184 +
  185 +function getDateTimeLogFormat(currentDates) {
  186 + var years = currentDates.getFullYear();
  187 + var months = currentDates.getMonth() + 1;
  188 + var day = currentDates.getDate();
  189 + var hours = currentDates.getHours();
  190 + var minutes = currentDates.getMinutes();
  191 + var second = currentDates.getSeconds();
  192 + var millisecs = currentDates.getMilliseconds();
  193 + var monthFormatted = months < 10 ? "0" + months : months;
  194 + var dayFormatted = day < 10 ? "0" + day : day;
  195 + var hourFormatted = hours < 10 ? "0" + hours : hours;
  196 + var minFormatted = minutes < 10 ? "0" + minutes : minutes;
  197 + var secFormatted = second < 10 ? "0" + second : second;
  198 + var milliFormatted = null;
  199 +
  200 + if (millisecs < 10) {
  201 + milliFormatted = "00" + millisecs;
  202 + }
  203 + else if (millisecs < 100) {
  204 + milliFormatted = "0" + millisecs;
  205 + }
  206 + else {
  207 + milliFormatted = millisecs;
  208 + }
  209 + var detail = '' + years + monthFormatted + dayFormatted + ' ' + hourFormatted + ':' + minFormatted + ':' + secFormatted + '.' + milliFormatted + '|' + os.hostname() + '|' + conf.projectName;
  210 + return detail;
  211 +}
  212 +
  213 +
  214 +
  215 +
  216 +
  217 +function initDB() {
  218 + if (conf.stat.mode === 0) {
  219 + db = new sqlite3.cached.Database(':memory:');
  220 +
  221 + } else if (conf.stat.mode === 1) {
  222 + if (!conf.stat.pathDB) {
  223 + conf.stat.pathDB = path.resolve(__dirname, 'statDB');
  224 + }
  225 + if (!fs.existsSync(conf.stat.pathDB)) {
  226 + fs.mkdirSync(conf.stat.pathDB);
  227 + }
  228 + db = new sqlite3.cached.Database(`${conf.stat.pathDB}/stat_${process.env.pm_id}.db`);
  229 + }
  230 +
  231 + db.serialize(function () {
  232 + db.run("CREATE TABLE IF NOT EXISTS stat (stat_time TEXT, stat_name TEXT);");
  233 + });
  234 +}
  235 +
  236 +function initLog() {
  237 + if (conf.log) {
  238 + if (conf.log.file) {
  239 + if (!fs.existsSync(conf.log.path)) {
  240 + //fs.mkdirSync(conf.log.path);
  241 + mkdirp.sync(conf.log.path);
  242 + }
  243 + streamTask['app'].push(createStream('app'));
  244 + }
  245 + if (conf.log.console) streamTask['app'].push(process.stdout);
  246 + }
  247 + if (conf.stat) {
  248 + if (conf.log.file){
  249 + if (!fs.existsSync(conf.stat.path)) {
  250 + //fs.mkdirSync(conf.stat.path);
  251 + mkdirp.sync(conf.stat.path);
  252 + }
  253 + streamTask['stt'].push(createStream('stt'));
  254 + }
  255 + if (conf.log.console) streamTask['stt'].push(process.stdout);
  256 + }
  257 + if (conf.summary) {
  258 + if (conf.log.file){
  259 + if (!fs.existsSync(conf.summary.path)) {
  260 + // fs.mkdirSync(conf.summary.path);
  261 + mkdirp.sync(conf.summary.path);
  262 + }
  263 + streamTask['smr'].push(createStream('smr'));
  264 + }
  265 + if (conf.log.console) streamTask['smr'].push(process.stdout);
  266 + }
  267 + if (conf.detail) {
  268 + if (conf.log.file){
  269 + if (!fs.existsSync(conf.detail.path)) {
  270 + // fs.mkdirSync(conf.detail.path);
  271 + mkdirp.sync(conf.detail.path);
  272 + }
  273 + streamTask['dtl'].push(createStream('dtl'));
  274 + }
  275 + if (conf.log.console) streamTask['dtl'].push(process.stdout);
  276 + }
  277 +}
  278 +
  279 +function addStat(stat_name) {
  280 + db.serialize(function () {
  281 + //db.run("CREATE TABLE lorem (info TEXT, xx TEXT)");
  282 + /*var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
  283 + for (var i = 0; i < 10; i++) {
  284 + stmt.run("Ipsum " + i);
  285 + }
  286 + stmt.finalize();
  287 +
  288 + db.run("INSERT INTO stat(stat_time, stat_name) VALUES (?)", ['xx',stat_name], function() {
  289 + console.log( 'x' );
  290 + getStat();
  291 + });*/
  292 +
  293 + /*db.run("INSERT INTO stat VALUES (?,?)", [dateFormat(new Date(), dateFMT_SQL), stat_name], function() {
  294 + getStat();
  295 + });*/
  296 +
  297 + db.run("INSERT INTO stat VALUES (?,?)", [dateFormat(new Date(), dateFMT_SQL), stat_name]);
  298 +
  299 + /*db.run("INSERT INTO stat VALUES (DATETIME('now'), '"+stat_name+"')", function() {
  300 + console.log( 'x' );
  301 + getStat();
  302 + });*/
  303 +
  304 +
  305 + });
  306 +
  307 +}
  308 +
  309 +
  310 +
  311 +//var prevStatDateRange;
  312 +function fushStat() {
  313 + var end = new Date();
  314 + end.setMilliseconds(0);
  315 +
  316 + //var start = new Date(end.getTime());
  317 + //start.setMinutes(end.getMinutes() - conf.log.statTime);
  318 +
  319 + var en = dateFormat(end, dateFMT_SQL);
  320 + //var st = dateFormat(prevStatDateRange, dateFMT_SQL);
  321 +
  322 + //prevStatDateRange = end; //assign for next loop
  323 + //console.log(st + '|' + en);
  324 + //var path = getStatFileName(end);
  325 +
  326 + db.serialize(function () {
  327 + //var stream = fs.createWriteStream(path, { 'flags': 'a' });
  328 + write('stt', en);
  329 +
  330 + db.each("SELECT stat_name, count(stat_name) as count FROM stat WHERE stat_time < ? group by stat_name order by stat_time", [en], function (err, row) {
  331 + if (err) {
  332 + console.log(err);
  333 + return;
  334 + }
  335 + //console.log(path+' '+ row.stat_name + ' ' + row.count );
  336 + write('stt', row.stat_name + ' ' + row.count);
  337 + });
  338 +
  339 + db.run("DELETE FROM stat WHERE stat_time < ?", [en]);
  340 +
  341 + /*db.each("SELECT stat_name, count(stat_name) as count FROM stat WHERE stat_time BETWEEN ? AND ? group by stat_name order by stat_name", [st, en], function (err, row) {
  342 + if (err) {
  343 + console.log(err);
  344 + return;
  345 + }
  346 + //console.log(path+' '+ row.stat_name + ' ' + row.count );
  347 + write(end, 'stt', row.stat_name + ' ' + row.count, false);
  348 + });
  349 +
  350 + db.run("DELETE FROM stat WHERE stat_time BETWEEN ? AND ?", [st, en]);*/
  351 +
  352 + });
  353 +}
  354 +
  355 +function getIntervalTime(type) {
  356 + if (type === 'app') {
  357 + return conf.log.time;
  358 + } else if (type === 'stt') {
  359 + return conf.stat.time;
  360 + } else if (type === 'smr') {
  361 + return conf.summary.time;
  362 + } else if (type === 'dtl') {
  363 + return conf.detail.time;
  364 + }
  365 + return null;
  366 +}
  367 +
  368 +
  369 +
  370 +log.stat = function (stat_name) {
  371 + addStat(stat_name);
  372 +}
  373 +
  374 +log.debug = function (..._log) {
  375 + if (conf.log.level > 0) return;
  376 + write('app', processApplog('debug', ..._log));
  377 +}
  378 +
  379 +log.info = function (..._log) {
  380 + if (conf.log.level > 1) return;
  381 + write('app', processApplog('info', ..._log));
  382 +}
  383 +log.warn = function (..._log) {
  384 + if (conf.log.level > 2) return;
  385 + write('app', processApplog('warn', ..._log));
  386 +}
  387 +log.error = function (..._log) {
  388 + if (conf.log.level > 3) return;
  389 + write('app', processApplog('error', ..._log));
  390 +}
  391 +
  392 +log.detail = function (detailLog) {
  393 + write('dtl', detailLog);
  394 +}
  395 +
  396 +
  397 +// log.detail = function (session, scenario, identity) {
  398 +// var startTimeDate = new Date();
  399 +// var inputTime;
  400 +// var outputTime;
  401 +
  402 +// var detailLog = {
  403 +// Session: session,
  404 +// InitInvoke: '', //only equinox platform
  405 +// Scenario: scenario,
  406 +// Identity: identity,
  407 +// InputTimeStamp: null,
  408 +// Input: [],
  409 +// OutputTimeStamp: null,
  410 +// Output: [],
  411 +// ProcessingTime: null,
  412 +// addInputRequest: function (node, cmd, rawData, data) {
  413 +// this.addInput(node, cmd, 'REQ', rawData, data);
  414 +// },
  415 +// addInputResponse: function (node, cmd, rawData, data, resTime) {
  416 +// this.addInput(node, cmd, 'RES', rawData, data, resTime);
  417 +// },
  418 +// addInputResponseTimeout: function (node, cmd) {
  419 +// this.addInput(node, cmd, 'RES_TIMEOUT');
  420 +// },
  421 +// addInputResponseError: function (node, cmd) {
  422 +// this.addInput(node, cmd, 'RES_ERROR');
  423 +// },
  424 +// addInput: function (node, cmd, type, rawData, data, resTime) {
  425 +// inputTime = new Date();
  426 +// if (typeof resTime === 'number') {
  427 +// resTime = resTime.toLocaleString() + ' ms';
  428 +// }
  429 +// var input = {
  430 +// Invoke: null,
  431 +// Event: node + '.' + cmd,
  432 +// Type: type,
  433 +// RawData: rawData,
  434 +// Data: data,
  435 +// ResTime: resTime
  436 +// };
  437 +// this.Input.push(input);
  438 +// },
  439 +
  440 +// addOutputRequest: function (node, cmd, rawData, data) {
  441 +// this.addOutput(node, cmd, 'REQ', rawData, data);
  442 +// },
  443 +// addOutputResponse: function (node, cmd, rawData, data) {
  444 +// this.addOutput(node, cmd, 'RES', rawData, data);
  445 +// },
  446 +// addOutputRequestRetry: function (node, cmd, rawData, data, total, maxCount) {
  447 +// this.addOutput(node, cmd, ('REQ_RETRY_' + total + '/' + maxCount), rawData, data);
  448 +// },
  449 +// addOutput: function (node, cmd, type, rawData, data) {
  450 +// outputTime = new Date();
  451 +// var input = {
  452 +// Invoke: null,
  453 +// Event: node + '.' + cmd,
  454 +// Type: type,
  455 +// RawData: rawData,
  456 +// Data: data
  457 +// };
  458 +
  459 +// this.Output.push(input);
  460 +// },
  461 +
  462 +// end: function () {
  463 +// let currentTime = new Date();
  464 +// detailLog.ProcessingTime = new Date().getTime() - startTimeDate.getTime();
  465 +// detailLog.InputTimeStamp = dateFormat(inputTime, dateFMT);
  466 +// detailLog.OutputTimeStamp = dateFormat(outputTime, dateFMT);;
  467 +
  468 +// write('dtl', JSON.stringify(detailLog));
  469 +// startTimeDate = currentTime;
  470 +// detailLog._clr();
  471 +// },
  472 +
  473 +// _clr: function (){
  474 +// detailLog.ProcessingTime = null;
  475 +// detailLog.InputTimeStamp = null;
  476 +// detailLog.OutputTimeStamp= null;
  477 +// detailLog.Input=[];
  478 +// detailLog.Output=[];
  479 +// }
  480 +// }
  481 +
  482 +// return detailLog;
  483 +// }
  484 +
  485 +log.summary = function (session, cmd, identity) {
  486 + var now = new Date();
  487 +
  488 + var summaryLog = {
  489 + requestTime: now,
  490 + session: session,
  491 + initInvoke: '', //only equinox platform
  492 + cmd: cmd,
  493 + identity: identity,
  494 + /*resultCode: null,
  495 + resultDescription: null,*/
  496 + blockDetail: [],
  497 +
  498 + addSuccessBlock: function (node, cmd, resultCode, resultDesc) {
  499 + //this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ resultCode+'; '+resultDesc+'(1)]]');
  500 + addBlock(this.blockDetail, node, cmd, resultCode, resultDesc);
  501 + },
  502 +
  503 + addErrorBlock: function (node, cmd, resultCode, resultDesc) {
  504 + //this.blockDetail.push('['+ node+'; '+cmd+'(1); ['+ resultCode+'; '+resultDesc+'(1)]]');
  505 + addBlock(this.blockDetail, node, cmd, resultCode, resultDesc);
  506 + },
  507 +
  508 + end: function (resultCode, resultDescription) {
  509 + var endTime = new Date();
  510 +
  511 + var blockDetailTxt = '[';
  512 + for (var j = 0; j < this.blockDetail.length; j++) {
  513 + var i = this.blockDetail[j];
  514 + var aa = i.node + '; ' + i.cmd + '(' + i.count + '); [';
  515 +
  516 + for (var k = 0; k < i.result.length; k++) {
  517 + var bb = i.result[k].resultCode + '; ' + i.result[k].resultDesc + '(' + i.result[k].count + ')';
  518 +
  519 + if (k === i.result.length - 1) {
  520 + aa += bb;
  521 + } else {
  522 + aa += (bb + ', ');
  523 + }
  524 + }
  525 +
  526 + if (j === this.blockDetail.length - 1) {
  527 + aa += ']';
  528 + } else {
  529 + aa += '], ';
  530 + }
  531 + blockDetailTxt += aa;
  532 + }
  533 + blockDetailTxt += ']';
  534 +
  535 +
  536 + var txt = dateFormat(this.requestTime, dateFMT) + '|';
  537 + txt += this.session + '|';
  538 + txt += this.initInvoke + '|'
  539 + txt += this.cmd + '|'
  540 + txt += this.identity + '|'
  541 + txt += resultCode + '|'
  542 + txt += resultDescription + '|'
  543 + txt += blockDetailTxt + '|'
  544 + txt += dateFormat(endTime, dateFMT) + '|'
  545 + txt += (endTime.getTime() - this.requestTime.getTime());
  546 +
  547 + write('smr', txt);
  548 + }
  549 + };
  550 + return summaryLog;
  551 +}
  552 +
  553 +function addBlock(store, node, cmd, resultCode, resultDesc) {
  554 + var found = null;
  555 +
  556 + for (var i = 0; i < store.length; i++) {
  557 + if (store[i].node === node && store[i].cmd === cmd) {
  558 + found = store[i];
  559 + store[i].count++;
  560 + break;
  561 + }
  562 + }
  563 +
  564 + if (!found) {
  565 + var result = {
  566 + resultCode: resultCode,
  567 + resultDesc: resultDesc,
  568 + count: 1
  569 + }
  570 +
  571 + var b = {
  572 + node: node,
  573 + cmd: cmd,
  574 + count: 1,
  575 + result: [result]
  576 + }
  577 + store.push(b);
  578 +
  579 + } else {
  580 + var foundResult = false;
  581 + for (var j = 0; j < found.result.length; j++) {
  582 + if (found.result[j].resultCode === resultCode &&
  583 + found.result[j].resultDesc === resultDesc) {
  584 +
  585 + found.result[j].count++;
  586 + foundResult = true;
  587 + break;
  588 + }
  589 + }
  590 +
  591 + if (!foundResult) {
  592 + var result = {
  593 + resultCode: resultCode,
  594 + resultDesc: resultDesc,
  595 + count: 1
  596 + }
  597 + found.result.push(result);
  598 + }
  599 + }
  600 +}
  601 +
  602 +log.init = function (_conf, express) {
  603 + log.initLog = true;
  604 + if (_conf) {
  605 + conf = _conf;
  606 + }
  607 +
  608 +
  609 +
  610 + if (conf.log) {
  611 + if (conf.log.level === 'debug') {
  612 + conf.log.level = 0;
  613 + } else if (conf.log.level === 'info') {
  614 + conf.log.level = 1;
  615 + } else if (conf.log.level === 'warn') {
  616 + conf.log.level = 2;
  617 + } else if (conf.log.level === 'error') {
  618 + conf.log.level = 3;
  619 + } else {
  620 + conf.log.level = 4;
  621 + }
  622 +
  623 + //enable only debug
  624 + if (express && conf.log.level === 0) {
  625 + express.use(function (req, res, next) {
  626 + req._reqTimeForLog = Date.now();
  627 + let sid;
  628 + if(typeof log.sessionID === 'function'){
  629 + sid = log.sessionID(req, res);
  630 + }
  631 +
  632 + let txtLogReq = 'INCOMING|__Method=' +req.method
  633 + + ' __URL=' + req.url
  634 + + ' __Headers=' + JSON.stringify(req.headers?req.headers:"{}" )
  635 + //+ ' __Params=' + JSON.stringify(req.params )
  636 + + ' __Body=' + JSON.stringify(req.body?req.body:"{}");
  637 +
  638 + if(sid){
  639 + log.debug(sid, txtLogReq);
  640 + }else{
  641 + log.debug(txtLogReq);
  642 + }
  643 +
  644 + onHeaders(res, ()=>{
  645 + let txtLogRes = 'OUTGOING|__Statuscode=' + res.statusCode
  646 + + ' __Headers=' + JSON.stringify(res._headers )
  647 + + ' __Body=' + req.res.resBody
  648 + + ' __Restime=' + ( Date.now() - req._reqTimeForLog );
  649 +
  650 + if(sid){
  651 + log.debug(sid, txtLogRes);
  652 + }else{
  653 + log.debug(txtLogRes);
  654 + }
  655 + });
  656 + next();
  657 + });
  658 + }
  659 + }
  660 +
  661 + initLog();
  662 +
  663 + if (conf.stat) {
  664 + initDB();
  665 + cron.schedule('*/' + conf.stat.statInterval + ' * * * *', function () {
  666 + fushStat();
  667 + });
  668 + }
  669 + return log;
  670 +};
  671 +
  672 +module.exports = log;
  673 +// module.exports = commonLog();
utils/cores/config.js 0 โ†’ 100644
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
  1 +
  2 +const nodeEnv = process.env.NODE_ENV || 'default';
  3 +
  4 +// setup config
  5 +const NodeJsonConfig = require('node-json-config');
  6 +const conf = new NodeJsonConfig('app.config.json');
  7 +
  8 +let defaultConfObj = conf.get('default');
  9 +// console.log('defaultConfObj');
  10 +// console.log(defaultConfObj);
  11 +
  12 +let envConfObj = conf.get(nodeEnv);
  13 +// console.log('envConfObj');
  14 +// console.log(envConfObj);
  15 +
  16 +let currentConfObj = Object.assign(defaultConfObj, envConfObj);
  17 +
  18 +// console.log('currentConfObj');
  19 +// console.log(currentConfObj);
  20 +
  21 +conf.put(nodeEnv, currentConfObj);
  22 +
  23 +conf.getOld = conf.get;
  24 +conf.get = function(configName) {
  25 + return conf.getOld(nodeEnv + '.' + configName);
  26 +};
  27 +
  28 +module.exports = conf;
0 \ No newline at end of file 29 \ No newline at end of file
utils/cores/constants.js 0 โ†’ 100644
@@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
  1 +module.exports = Object.freeze({
  2 + REQUEST: 'Request',
  3 + RESPONSE: 'Response',
  4 + SUCCESS: 'Success',
  5 + ERROR: 'Error',
  6 + FAIL: 'Fail',
  7 + URLKEYWORD : ["filter","offset","orderby","limit","fields"],
  8 + METHOD:{
  9 + GET : 'GET',
  10 + POST : 'POST',
  11 + PUT : 'PUT',
  12 + DELETE : 'DELETE'
  13 + },
  14 + RESPONSECONN:{
  15 + STATS:{
  16 + ETIMEDOUT:'ETIMEDOUT',
  17 + ECONNREFUSED : 'ECONNREFUSED',
  18 + ESOCKETTIMEDOUT : 'ESOCKETTIMEDOUT',
  19 + MISSING : 'Missing'
  20 + },
  21 + MESSAGE:{
  22 + ETIMEDOUT:{
  23 + resultCode : 'null',
  24 + resultDescription : 'Time out'
  25 + },
  26 + ECONNREFUSED:{
  27 + resultCode : 'null',
  28 + resultDescription : 'Reject'
  29 + },
  30 + ESOCKETTIMEDOUT:{
  31 + resultCode : 'null',
  32 + resultDescription : 'Time out'
  33 + },
  34 + EOTHERERROR:{
  35 + resultCode : 'null',
  36 + resultDescription : 'Error'
  37 + },
  38 + ERROR:{
  39 + resultCode : '50000',
  40 + resultDescription : 'System error'
  41 + },
  42 + SUCCESS:{
  43 + resultCode : '20000',
  44 + resultDescription : 'Success'
  45 + },
  46 + EXCEED:{
  47 + resultCode : '40302',
  48 + resultDescription : 'Exceed data allowances'
  49 + },
  50 + DBERROR:{
  51 + resultCode : '50001',
  52 + resultDescription : 'Database error'
  53 + },
  54 + SUCCESSWITHCON:{
  55 + resultCode : '20001',
  56 + resultDescription : 'Success with condition'
  57 + }
  58 + }
  59 + },
  60 + RESPONSERESULT:{
  61 + SUCCESS:{
  62 + resultCode : '20000',
  63 + resultDescription : 'Success'
  64 + },
  65 + MISSING_INVALID:{
  66 + resultCode : '40300',
  67 + resultDescription : 'Missing or invalid parameter'
  68 + },
  69 + DATA_NOT_FOUND:{
  70 + resultCode : '40401',
  71 + resultDescription : 'Data Not Found'
  72 + },
  73 + DATA_EXIST:{
  74 + resultCode : '40301',
  75 + resultDescription : 'Data Exist'
  76 + },
  77 + ERROR:{
  78 + resultCode : '50000',
  79 + resultDescription : 'System error'
  80 + },
  81 + DENIED:{
  82 + resultCode : '40100',
  83 + resultDescription : 'Access Denied'
  84 + },
  85 + UNKNOW:{
  86 + resultCode : '50060',
  87 + resultDescription : 'Unknown URL'
  88 + }
  89 + }
  90 +});
0 \ No newline at end of file 91 \ No newline at end of file
utils/cores/helper.js 0 โ†’ 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +var constants = require('./constants');
  2 +
  3 +findCmdfromMethod = function (method)
  4 +{
  5 + var cmd = "";
  6 + switch (method) {
  7 + case constants.METHOD.GET:
  8 + cmd = 'QUERY';
  9 + break;
  10 + case constants.METHOD.POST:
  11 + cmd = "INSERT"
  12 + break;
  13 + case constants.METHOD.PUT:
  14 + cmd = 'UPDATE';
  15 + break;
  16 + case constants.METHOD.DELETE:
  17 + cmd = 'DELETE';
  18 + break;
  19 + }
  20 + return cmd;
  21 +}
  22 +
  23 +undefinedToNull = function(data){
  24 + if(!data){
  25 + data = 'null';
  26 + } else if(data.includes('undefined')){
  27 + data = data.replace(/undefined/g,'null');
  28 + } else {
  29 + data = data;
  30 + }
  31 +
  32 + return data;
  33 +}
  34 +
  35 +
  36 +module.exports = {
  37 + findCmdfromMethod,
  38 + undefinedToNull
  39 +};
0 \ No newline at end of file 40 \ No newline at end of file
utils/cores/log.js 0 โ†’ 100644
@@ -0,0 +1,265 @@ @@ -0,0 +1,265 @@
  1 +var cfg = require('./config');
  2 +var conf = cfg.get("configlog");
  3 +conf.projectName = cfg.get("appName");
  4 +var logg = require('./commonlog');
  5 +var constants = require('./constants');
  6 +var helper = require('./helper');
  7 +
  8 +var logger = [];
  9 +
  10 +const mapLog = {};
  11 +
  12 +logger.startlog = function (req,cmdData,session,identity)
  13 +{
  14 +
  15 +
  16 + var start = {
  17 + session : helper.undefinedToNull(session),
  18 + cmd : cmdData,
  19 + identity : helper.undefinedToNull(identity)
  20 + };
  21 +
  22 + mapLog[req.id].start = start;
  23 +}
  24 +
  25 +logger.stat = function (msg){
  26 + logg.stat(msg);
  27 +}
  28 +
  29 +logger.log = function (msg,type)
  30 +{
  31 +
  32 + if(!type)
  33 + type = 'debug';
  34 +
  35 + type = type.toLowerCase();
  36 +
  37 + switch(type) {
  38 + case 'debug':
  39 + logg.debug(msg);
  40 + break;
  41 + case 'info':
  42 + logg.info(msg);
  43 + break;
  44 + case 'warn':
  45 + logg.warn(msg);
  46 + break;
  47 + case 'error':
  48 + logg.error(msg);
  49 + break;
  50 + default:
  51 + logg.debug(msg);
  52 + }
  53 +
  54 + console.log(msg);
  55 +}
  56 +
  57 +logger.addSuccessSummary = function (req,nodeData,cmdData,result)
  58 +{
  59 + summary = {
  60 + node : helper.undefinedToNull(nodeData),
  61 + cmd : cmdData,
  62 + resultCode : result.resultCode,
  63 + resultDescription : result.resultDescription,
  64 + type : constants.SUCCESS
  65 + };
  66 + mapLog[req.id].summaryList.push(summary);
  67 +}
  68 +
  69 +logger.addErrorSummary = function (req,nodeData,cmdData,result)
  70 +{
  71 + summary = {
  72 + node : helper.undefinedToNull(nodeData),
  73 + cmd : cmdData,
  74 + resultCode : result.resultCode,
  75 + resultDescription : result.resultDescription,
  76 + type : constants.ERROR
  77 + };
  78 +
  79 + mapLog[req.id].summaryList.push(summary);
  80 +}
  81 +
  82 +logger.logSummary = function (req,response)
  83 +{
  84 +
  85 + var start = mapLog[req.id].start;
  86 + var summaryList = mapLog[req.id].summaryList;
  87 +
  88 + var log = logg.summary(start.session,start.cmd,start.identity);
  89 + var row;
  90 + for (let index = 0; index < summaryList.length; index++) {
  91 + row = summaryList[index];
  92 + if(row.type === constants.SUCCESS){
  93 + log.addSuccessBlock(row.node,row.cmd,row.resultCode,row.resultDescription);
  94 + } else {
  95 + log.addErrorBlock(row.node,row.cmd,helper.undefinedToNull(row.resultCode),helper.undefinedToNull(row.resultDescription));
  96 + }
  97 + }
  98 +
  99 + if(response){
  100 + log.end(response.resultCode,response.resultDescription)
  101 + } else {
  102 + log.end()
  103 + }
  104 +}
  105 +
  106 +logger.startEC = function(req)
  107 +{
  108 + var objectLog = {
  109 + summaryList : [],
  110 + start : {},
  111 + detail : {},
  112 + startTime : new Date()
  113 + }
  114 +
  115 +
  116 + mapLog[req.id] = objectLog;
  117 +
  118 + var newLine = "\r\n";
  119 + var messageRes = '';
  120 + var startTime = mapLog[req.id].startTime;
  121 +
  122 +
  123 + if(req.body)
  124 + {
  125 + if(typeof req.body === 'string')
  126 + body = req.bod;
  127 + else
  128 + body = JSON.stringify(req.body);
  129 + }
  130 +
  131 + var header = "";
  132 + if(req.headers)
  133 + {
  134 + if(typeof req.headers === 'string')
  135 + header = req.headers;
  136 + else
  137 + header = JSON.stringify(req.headers);
  138 + }
  139 +
  140 + messageRes += newLine+newLine+"#====> Incoming Message <====# ";
  141 + messageRes += newLine+"Session : "+req.id;
  142 + messageRes += newLine+"Url : "+req.url;
  143 + messageRes += newLine+"Method : "+req.method;
  144 + messageRes += newLine+"Header : "+header;
  145 + messageRes += newLine+"Body : "+body;
  146 + messageRes += newLine+"Time in : "+startTime.toISOString();
  147 + messageRes += newLine
  148 +
  149 + // logg.debug(messageRes);
  150 +}
  151 +
  152 +logger.endEC = function(req,res)
  153 +{
  154 +
  155 + var newLine = "\r\n";
  156 + var messageRes = '';
  157 + var startTime = mapLog[req.id].startTime;
  158 + var endTime = new Date();
  159 +
  160 + var body = "";
  161 + if(res.resBody)
  162 + {
  163 + if(typeof res.resBody === 'string')
  164 + body = res.resBody;
  165 + else
  166 + body = JSON.stringify(res.resBody);
  167 + }
  168 +
  169 + var header = "";
  170 + if(res.req.headers)
  171 + {
  172 + if(typeof res.req.headers === 'string')
  173 + header = res.req.headers;
  174 + else
  175 + header = JSON.stringify(res.req.headers);
  176 + }
  177 +
  178 + messageRes += newLine+newLine+"#====> Outgoing Message <====# ";
  179 + messageRes += newLine+"Session : "+req.id;
  180 + messageRes += newLine+"Header : "+header;
  181 + messageRes += newLine+"Body : "+body;
  182 + messageRes += newLine+"Time out : "+endTime.toISOString();
  183 + messageRes += newLine+"Use times : "+Math.abs(endTime - startTime)+" ms";
  184 +
  185 +
  186 +
  187 +
  188 + // logg.debug(messageRes);
  189 + messageRes += newLine
  190 +}
  191 +
  192 +//detail
  193 +logger.detailRequestFE = function(req)
  194 +{
  195 + // console.log(req);
  196 + var protocal = "HTTP";
  197 + var method = req.method;
  198 + var url = req.headers.host+req.originalUrl;
  199 + var body = JSON.stringify(req.body);
  200 + // logger4jDetail.info(logPrefix(req)+protocal+" "+method+" "+url+" Request from FE - body: "+body);
  201 + logg.detail(logPrefix(req)+protocal+" "+method+" "+url+" Request from FE - body: "+body);
  202 +
  203 +}
  204 +
  205 +logger.detailResponseFE = function(req)
  206 +{
  207 + var protocal = "HTTP";
  208 + var method = req.method;
  209 + var url = req.headers.host+req.originalUrl;
  210 + var body = JSON.stringify(req.body);
  211 + // logger4jDetail.info(logPrefix(req)+protocal+" "+method+" "+url+" Response to FE - body: "+body);
  212 + logg.detail(logPrefix(req)+protocal+" "+method+" "+url+" Response to FE - body: "+body);
  213 +}
  214 +
  215 +//mongo
  216 +logger.detailSqlQuery = function(req,method,collection,data)
  217 +{
  218 + // logger4jDetail.info(logPrefix(req)+"BE Send Mongo Collection: \""+collection+"\" Query: "+JSON.stringify(data));
  219 + logg.detail(logPrefix(req)+"BE Send Mongo Collection: "+collection+" Method:"+helper.findCmdfromMethod(method)+" Query: "+JSON.stringify(data));
  220 +}
  221 +
  222 +logger.detailSqlResult = function(req,collection,data)
  223 +{
  224 + // logger4jDetail.info(logPrefix(req)+"BE Receive Mongo Collection: \""+collection+"\" Result: "+JSON.stringify(data));
  225 + logg.detail(logPrefix(req)+"BE Receive Mongo Collection: \""+collection+"\" Result: "+JSON.stringify(data));
  226 +
  227 +}
  228 +
  229 +logger.detailRequestBE = function(req,data)
  230 +{
  231 + var protocal = data.protocal;
  232 + var method = data.method;
  233 + var url = data.url;
  234 + var header = JSON.stringify(data.header);
  235 + var body = JSON.stringify(data.body);
  236 + // logger4jDetail.info(logPrefix(req)+"BE Send "+protocal+" "+method+" "+url+" request-header: "+header+" request-body:"+body);
  237 + logg.detail(logPrefix(req)+"BE Send "+protocal+" "+method+" "+url+" request-header: "+header+" request-body:"+body);
  238 +}
  239 +
  240 +logger.detailResponseBE = function(req,data)
  241 +{
  242 + var protocal = data.protocal;
  243 + var method = data.method;
  244 + var url = data.url;
  245 + var header = JSON.stringify(data.header);
  246 + var body = JSON.stringify(data.body);
  247 + // logger4jDetail.info(logPrefix(req)+"BE Receive "+protocal+" "+method+" "+url+" response-header: "+header+" response-body:"+body);
  248 + logg.detail(logPrefix(req)+"BE Receive "+protocal+" "+method+" "+url+" response-header: "+header+" response-body:"+body);
  249 +}
  250 +
  251 +//private
  252 +function logPrefix(req)
  253 +{
  254 +
  255 + var userName = "userName";
  256 + var sessionID = "sessionID";
  257 + var session = "session";
  258 +
  259 + return ":: ## "+userName+" - "+sessionID+" - "+session+ " ## ";
  260 +
  261 +}
  262 +
  263 +
  264 +
  265 +module.exports = logger;
utils/cores/stats.js 0 โ†’ 100644
@@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
  1 +var config = require('./config');
  2 +var log = require('./log.js');
  3 +var helper = require('./helper');
  4 +
  5 +
  6 +var nodeName = config.get("appName");
  7 +var stat = [];
  8 +
  9 +
  10 +//client and Node
  11 +stat.receiveRequest = function (method,cmd){
  12 + writeStats(nodeName+" Receive "+method+" "+cmd+" Request");
  13 +};
  14 +
  15 +stat.receiveBadRequest = function (method,cmd){
  16 + writeStats(nodeName+" Receive Bad "+method+" "+cmd+" Request");
  17 +};
  18 +
  19 +stat.sendResponse = function (method,cmd,result){
  20 + writeStats(nodeName+" Send "+method+" "+cmd+" Response "+(result?result:"Success"));
  21 +};
  22 +
  23 +//node and mongo
  24 +stat.sendQuery = function (method,collection){
  25 + writeStats(nodeName+" Send "+helper.findCmdfromMethod(method)+" "+collection+" Request");
  26 +};
  27 +
  28 +stat.receiveBadQuery = function (method,collection){
  29 + writeStats(nodeName+" Receive Bad "+helper.findCmdfromMethod(method)+" "+collection+" Response");
  30 +};
  31 +
  32 +stat.receiveQuery = function (method,collection){
  33 + writeStats(nodeName+" Receive "+helper.findCmdfromMethod(method)+" "+collection+" Response");
  34 +};
  35 +
  36 +//unknow
  37 +stat.receiveUnknow = function(){
  38 + writeStats(nodeName+" Receive Unknown Error Request");
  39 +};
  40 +
  41 +stat.sendUnknow = function(){
  42 + writeStats(nodeName+" Send Unknown Error Response");
  43 +};
  44 +
  45 +function writeStats(string) {
  46 + log.log(string);
  47 + log.stat(string);
  48 +}
  49 +
  50 +
  51 +module.exports = stat;
0 \ No newline at end of file 52 \ No newline at end of file
utils/log.js
@@ -1,273 +0,0 @@ @@ -1,273 +0,0 @@
1 -var cfg = require('./config');  
2 -var utils = require('./utils');  
3 -var conf = cfg.get("configlog");  
4 -conf.projectName = cfg.get("appName");  
5 -var logg = require('./commonlog');  
6 -var constants = require('./constants');  
7 -var utils = require('./utils');  
8 -  
9 -  
10 -// var log4js = require('log4js');  
11 -// var appenders = {};  
12 -// appenders[conf.projectName] = { type: 'file', filename: conf.detail.path+"/"+os.hostname() + '_'+conf.projectName+'.detail' };  
13 -// log4js.configure({  
14 -// appenders: appenders ,  
15 -// categories: { default: { appenders: [conf.projectName], level: 'info' } }  
16 -// });  
17 -  
18 -// var logger4jDetail = log4js.getLogger(conf.projectName);  
19 -var logger = [];  
20 -  
21 -const mapLog = {};  
22 -  
23 -logger.startlog = function (req,cmdData,session,identity)  
24 -{  
25 -  
26 -  
27 - var start = {  
28 - session : utils.undefinedToNull(session),  
29 - cmd : cmdData,  
30 - identity : utils.undefinedToNull(identity)  
31 - };  
32 -  
33 - mapLog[req.id].start = start;  
34 -}  
35 -  
36 -logger.stat = function (msg){  
37 - logg.stat(msg);  
38 -}  
39 -  
40 -logger.log = function (msg,type)  
41 -{  
42 -  
43 - if(!type)  
44 - type = 'debug';  
45 -  
46 - type = type.toLowerCase();  
47 -  
48 - switch(type) {  
49 - case 'debug':  
50 - logg.debug(msg);  
51 - break;  
52 - case 'info':  
53 - logg.info(msg);  
54 - break;  
55 - case 'warn':  
56 - logg.warn(msg);  
57 - break;  
58 - case 'error':  
59 - logg.error(msg);  
60 - break;  
61 - default:  
62 - logg.debug(msg);  
63 - }  
64 -  
65 - console.log(msg);  
66 -}  
67 -  
68 -logger.addSuccessSummary = function (req,nodeData,cmdData,result)  
69 -{  
70 - summary = {  
71 - node : utils.undefinedToNull(nodeData),  
72 - cmd : cmdData,  
73 - resultCode : result.resultCode,  
74 - resultDescription : result.resultDescription,  
75 - type : constants.SUCCESS  
76 - };  
77 - mapLog[req.id].summaryList.push(summary);  
78 -}  
79 -  
80 -logger.addErrorSummary = function (req,nodeData,cmdData,result)  
81 -{  
82 - summary = {  
83 - node : utils.undefinedToNull(nodeData),  
84 - cmd : cmdData,  
85 - resultCode : result.resultCode,  
86 - resultDescription : result.resultDescription,  
87 - type : constants.ERROR  
88 - };  
89 -  
90 - mapLog[req.id].summaryList.push(summary);  
91 -}  
92 -  
93 -logger.logSummary = function (req,response)  
94 -{  
95 -  
96 - var start = mapLog[req.id].start;  
97 - var summaryList = mapLog[req.id].summaryList;  
98 -  
99 - var log = logg.summary(start.session,start.cmd,start.identity);  
100 - var row;  
101 - for (let index = 0; index < summaryList.length; index++) {  
102 - row = summaryList[index];  
103 - if(row.type === constants.SUCCESS){  
104 - log.addSuccessBlock(row.node,row.cmd,row.resultCode,row.resultDescription);  
105 - } else {  
106 - log.addErrorBlock(row.node,row.cmd,utils.undefinedToNull(row.resultCode),utils.undefinedToNull(row.resultDescription));  
107 - }  
108 - }  
109 -  
110 - if(response){  
111 - log.end(response.resultCode,response.resultDescription)  
112 - } else {  
113 - log.end()  
114 - }  
115 -}  
116 -  
117 -logger.startEC = function(req)  
118 -{  
119 - var objectLog = {  
120 - summaryList : [],  
121 - start : {},  
122 - detail : {},  
123 - startTime : new Date()  
124 - }  
125 -  
126 -  
127 - mapLog[req.id] = objectLog;  
128 -  
129 - var newLine = "\r\n";  
130 - var messageRes = '';  
131 - var startTime = mapLog[req.id].startTime;  
132 -  
133 -  
134 - if(req.body)  
135 - {  
136 - if(typeof req.body === 'string')  
137 - body = req.bod;  
138 - else  
139 - body = JSON.stringify(req.body);  
140 - }  
141 -  
142 - var header = "";  
143 - if(req.headers)  
144 - {  
145 - if(typeof req.headers === 'string')  
146 - header = req.headers;  
147 - else  
148 - header = JSON.stringify(req.headers);  
149 - }  
150 -  
151 - messageRes += newLine+newLine+"#====> Incoming Message <====# ";  
152 - messageRes += newLine+"Session : "+req.id;  
153 - messageRes += newLine+"Url : "+req.url;  
154 - messageRes += newLine+"Method : "+req.method;  
155 - messageRes += newLine+"Header : "+header;  
156 - messageRes += newLine+"Body : "+body;  
157 - messageRes += newLine+"Time in : "+startTime.toISOString();  
158 - messageRes += newLine  
159 -  
160 - // logg.debug(messageRes);  
161 -}  
162 -  
163 -logger.endEC = function(req,res)  
164 -{  
165 -  
166 - var newLine = "\r\n";  
167 - var messageRes = '';  
168 - var startTime = mapLog[req.id].startTime;  
169 - var endTime = new Date();  
170 -  
171 - var body = "";  
172 - if(res.resBody)  
173 - {  
174 - if(typeof res.resBody === 'string')  
175 - body = res.resBody;  
176 - else  
177 - body = JSON.stringify(res.resBody);  
178 - }  
179 -  
180 - var header = "";  
181 - if(res.req.headers)  
182 - {  
183 - if(typeof res.req.headers === 'string')  
184 - header = res.req.headers;  
185 - else  
186 - header = JSON.stringify(res.req.headers);  
187 - }  
188 -  
189 - messageRes += newLine+newLine+"#====> Outgoing Message <====# ";  
190 - messageRes += newLine+"Session : "+req.id;  
191 - messageRes += newLine+"Header : "+header;  
192 - messageRes += newLine+"Body : "+body;  
193 - messageRes += newLine+"Time out : "+endTime.toISOString();  
194 - messageRes += newLine+"Use times : "+Math.abs(endTime - startTime)+" ms";  
195 -  
196 -  
197 -  
198 -  
199 - // logg.debug(messageRes);  
200 - messageRes += newLine  
201 -}  
202 -  
203 -//detail  
204 -logger.detailRequestFE = function(req)  
205 -{  
206 - // console.log(req);  
207 - var protocal = "HTTP";  
208 - var method = req.method;  
209 - var url = req.headers.host+req.originalUrl;  
210 - var body = JSON.stringify(req.body);  
211 - // logger4jDetail.info(logPrefix(req)+protocal+" "+method+" "+url+" Request from FE - body: "+body);  
212 - logg.detail(logPrefix(req)+protocal+" "+method+" "+url+" Request from FE - body: "+body);  
213 -  
214 -}  
215 -  
216 -logger.detailResponseFE = function(req)  
217 -{  
218 - var protocal = "HTTP";  
219 - var method = req.method;  
220 - var url = req.headers.host+req.originalUrl;  
221 - var body = JSON.stringify(req.body);  
222 - // logger4jDetail.info(logPrefix(req)+protocal+" "+method+" "+url+" Response to FE - body: "+body);  
223 - logg.detail(logPrefix(req)+protocal+" "+method+" "+url+" Response to FE - body: "+body);  
224 -}  
225 -  
226 -//mongo  
227 -logger.detailSqlQuery = function(req,method,collection,data)  
228 -{  
229 - // logger4jDetail.info(logPrefix(req)+"BE Send Mongo Collection: \""+collection+"\" Query: "+JSON.stringify(data));  
230 - logg.detail(logPrefix(req)+"BE Send Mongo Collection: "+collection+" Method:"+utils.findCmdfromMethod(method)+" Query: "+JSON.stringify(data));  
231 -}  
232 -  
233 -logger.detailSqlResult = function(req,collection,data)  
234 -{  
235 - // logger4jDetail.info(logPrefix(req)+"BE Receive Mongo Collection: \""+collection+"\" Result: "+JSON.stringify(data));  
236 - logg.detail(logPrefix(req)+"BE Receive Mongo Collection: \""+collection+"\" Result: "+JSON.stringify(data));  
237 -  
238 -}  
239 -  
240 -logger.detailRequestBE = function(req,data)  
241 -{  
242 - var protocal = data.protocal;  
243 - var method = data.method;  
244 - var url = data.url;  
245 - var header = JSON.stringify(data.header);  
246 - var body = JSON.stringify(data.body);  
247 - // logger4jDetail.info(logPrefix(req)+"BE Send "+protocal+" "+method+" "+url+" request-header: "+header+" request-body:"+body);  
248 - logg.detail(logPrefix(req)+"BE Send "+protocal+" "+method+" "+url+" request-header: "+header+" request-body:"+body);  
249 -}  
250 -  
251 -logger.detailResponseBE = function(req,data)  
252 -{  
253 - var protocal = data.protocal;  
254 - var method = data.method;  
255 - var url = data.url;  
256 - var header = JSON.stringify(data.header);  
257 - var body = JSON.stringify(data.body);  
258 - // logger4jDetail.info(logPrefix(req)+"BE Receive "+protocal+" "+method+" "+url+" response-header: "+header+" response-body:"+body);  
259 - logg.detail(logPrefix(req)+"BE Receive "+protocal+" "+method+" "+url+" response-header: "+header+" response-body:"+body);  
260 -}  
261 -  
262 -function logPrefix(req)  
263 -{  
264 -  
265 - var userName = "userName";  
266 - var sessionID = "sessionID";  
267 - var session = "session";  
268 -  
269 - return ":: ## "+userName+" - "+sessionID+" - "+session+ " ## ";  
270 -  
271 -}  
272 -  
273 -module.exports = logger;  
utils/mongoDB.js
1 -const log = require('./log');  
2 -const stat = require('./stats');  
3 -var constants = require('./constants');  
4 var MongoClient = require('mongodb').MongoClient; 1 var MongoClient = require('mongodb').MongoClient;
5 -var config = require('./config'); 2 +
  3 +const core = require('./core');
  4 +const log = core.log;
  5 +const stat = core.stats;
  6 +const constants = core.constants;
  7 +const config = core.config;
  8 +
  9 +
6 10
7 var connection = {}; 11 var connection = {};
8 connection.reqMongo = async function (req,method, query, collection) { 12 connection.reqMongo = async function (req,method, query, collection) {
utils/stats.js
@@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
1 -var config = require('./config');  
2 -var log = require('./log.js');  
3 -var utils = require('./utils');  
4 -  
5 -  
6 -var nodeName = config.get("appName");  
7 -var stat = [];  
8 -  
9 -  
10 -//client and Node  
11 -stat.receiveRequest = function (method,cmd){  
12 - writeStats(nodeName+" Receive "+method+" "+cmd+" Request");  
13 -};  
14 -  
15 -stat.receiveBadRequest = function (method,cmd){  
16 - writeStats(nodeName+" Receive Bad "+method+" "+cmd+" Request");  
17 -};  
18 -  
19 -stat.sendResponse = function (method,cmd,result){  
20 - writeStats(nodeName+" Send "+method+" "+cmd+" Response "+(result?result:"Success"));  
21 -};  
22 -  
23 -//node and mongo  
24 -stat.sendQuery = function (method,collection){  
25 - writeStats(nodeName+" Send "+utils.findCmdfromMethod(method)+" "+collection+" Request");  
26 -};  
27 -  
28 -stat.receiveBadQuery = function (method,collection){  
29 - writeStats(nodeName+" Receive Bad "+utils.findCmdfromMethod(method)+" "+collection+" Response");  
30 -};  
31 -  
32 -stat.receiveQuery = function (method,collection){  
33 - writeStats(nodeName+" Receive "+utils.findCmdfromMethod(method)+" "+collection+" Response");  
34 -};  
35 -  
36 -//unknow  
37 -stat.receiveUnknow = function(){  
38 - writeStats(nodeName+" Receive Unknown Error Request");  
39 -};  
40 -  
41 -stat.sendUnknow = function(){  
42 - writeStats(nodeName+" Send Unknown Error Response");  
43 -};  
44 -  
45 -function writeStats(string) {  
46 - log.log(string);  
47 - log.stat(string);  
48 -}  
49 -  
50 -  
51 -module.exports = stat;  
52 \ No newline at end of file 0 \ No newline at end of file
utils/utils.js
1 1
2 var parseFilter = require('ldapjs').parseFilter; 2 var parseFilter = require('ldapjs').parseFilter;
3 -var constants = require('./constants'); 3 +var constants = require('./cores/constants');
4 4
5 // //unit test 5 // //unit test
6 // var fileTempUnitTest = './unitTest/testCase.txt'; 6 // var fileTempUnitTest = './unitTest/testCase.txt';