xtool/contrib/mORMot/SyNode/Samples/02 - Bindings/ExtendDebuggerConsole.js

69 lines
3.0 KiB
JavaScript

import {setConsoleCommands, setConsoleMessageResolver} from 'DevTools/Debugger.js';
let dbg_binding = process.binding('debugger'),
global = dbg_binding.global;
setConsoleCommands({
help: () => 'Welcome to SyNode console.',
'$cwd': {
command: () => {return global.process.cwd(); },
description: 'Show current working dir'
},
'$mormot': {
command: () => 'http://synopse.info',
description:
`Show where the mORMot live.
Remember - RTFM before write to forum :)`
}
});
setConsoleMessageResolver((msg) => {
let timestamp = (new Date(msg.substr(0,4)+'-'+msg.substr(4,2)+'-'+msg.substr(6,2)+'T'+msg.substr(9,2)+':'+msg.substr(11,2)+':'+msg.substr(13,2)+'.'+msg.substr(15,2)+'0Z')).getTime(),
logLevel = msg.substr(20,7),
level,
category;
if (timestamp) {
msg = msg.substr(20).replace(/\t/gi, ' ');
const logLevelMap = {
' ': {category: 'webdev', level: 'log'},
' info ': {category: 'webdev', level: 'log'},
' debug ': {category: 'server', level: 'info'},
' trace ': {category: 'webdev', level: 'log'},
' warn ': {category: 'webdev', level: 'warn'},
' ERROR ': {category: 'webdev', level: 'error'},
' + ': {category: 'webdev', level: 'log'},
' - ': {category: 'webdev', level: 'log'},
' OSERR ': {category: 'webdev', level: 'error'},
' EXC ': {category: 'webdev', level: 'error'},
' EXCOS ': {category: 'webdev', level: 'error'},
' mem ': {category: 'webdev', level: 'log'},
' stack ': {category: 'webdev', level: 'log'},
' fail ': {category: 'webdev', level: 'error'},
' SQL ': {category: 'webdev', level: 'info'},
' cache ': {category: 'webdev', level: 'log'},
' res ': {category: 'webdev', level: 'log'},
' DB ': {category: 'webdev', level: 'log'},
' http ': {category: 'network', level: 'log'},
' clnt ': {category: 'network', level: 'warn'},
' srvr ': {category: 'network', level: 'warn'},
' call ': {category: 'webdev', level: 'log'},
' ret ': {category: 'webdev', level: 'log'},
' auth ': {category: 'server', level: 'log'},
' cust1 ': {category: 'js', level: 'warn'},
' cust2 ': {category: 'server', level: 'warn'},
' cust3 ': {category: 'webdev', level: 'log'},
' cust4 ': {category: 'webdev', level: 'log'},
' rotat ': {category: 'webdev', level: 'log'},
' dddER ': {category: 'webdev', level: 'log'},
' dddIN ': {category: 'webdev', level: 'log'},
' mon ': {category: 'webdev', level: 'log'}
};
level = logLevelMap[logLevel].level;
category = logLevelMap[logLevel].category;
} else {
timestamp = Date.now();
category = 'webdev';
level = 'log';
}
return {level: level, category: category, msg: msg, timeStamp: timestamp}
});