diff --git a/exec/json-service.js b/exec/json-service.js index 8a29199b8be72cef4158f85511a14a3f6c4fde7d..4f0d6a47aaa4110e8a4520642d437d115138abe0 100644 --- a/exec/json-service.js +++ b/exec/json-service.js @@ -449,7 +449,6 @@ admin = new (function() { /* module handler */ engine = new (function() { this.modules = []; - this.queue = undefined; this.file = new File(serviceIniFile); /* load module list */ @@ -461,12 +460,12 @@ engine = new (function() { var modules=this.file.iniGetAllObjects(); this.file.close(); for each(var m in modules) { - try { - this.modules[m.name.toUpperCase()]=new Module(m.name,m.dir,m.read,m.write); - log(LOG_DEBUG,"loaded module: " + m.name); - } catch (err) { - log(LOG_ERROR, 'Failed to load module: ' + m.name + ', ' + err); - } + try { + this.modules[m.name.toUpperCase()]=new Module(m.name,m.dir,m.read,m.write); + log(LOG_DEBUG,"loaded module: " + m.name); + } catch (err) { + log(LOG_ERROR, 'Failed to load module: ' + m.name + ', ' + err); + } } } @@ -475,6 +474,7 @@ engine = new (function() { for each(var m in this.modules) { if(!m.online) continue; + m.poll(); m.db.cycle(); } } @@ -600,6 +600,28 @@ engine = new (function() { this.read = read; this.write = write; this.db; + + this.poll = function() { + if(this.queue != undefined) { + var type = this.queue.poll(); + switch(type) { + case "log": + var data = this.queue.read(type); + log(data.LOG_LEVEL,data.message); + break; + case true: + var data = this.queue.read(); + //log(LOG_INFO,JSON.stringify(data)); + break; + case false: + break; + default: + var data = this.queue.read(type); + log(LOG_ERROR,"unknown data received from background service: " + type); + break; + } + } + } this.init = function() { this.db=new JSONdb(this.dir+this.name+".json", this.name); diff --git a/exec/load/backgroundlog.js b/exec/load/backgroundlog.js new file mode 100644 index 0000000000000000000000000000000000000000..0dcae5f38f7b334e9d10cf9a125d249140bf186b --- /dev/null +++ b/exec/load/backgroundlog.js @@ -0,0 +1,42 @@ +load("sbbsdefs.js"); + +js.global.log = function(log_level, message) { + if(js.global.parent_queue != undefined) { + parent_queue.write({LOG_LEVEL:log_level,message:message},"log"); + } + else { + var ef = new File(exec_path + "/e.log"); + var log_type = ""; + switch(log_level) { + case LOG_EMERG: + log_type = "EMERGENCY"; + break; + case LOG_ALERT: + log_type = "EMERGENCY"; + break; + case LOG_CRIT: + log_type = "CRITICAL"; + break; + case LOG_ERR: + log_type = "ERROR"; + break; + case LOG_WARNING: + log_type = "WARNING"; + break; + case LOG_NOTICE: + log_type = "NOTICE"; + break; + case LOG_DEBUG: + log_type = "DEBUG"; + break; + case LOG_INFO: + default: + log_type = "INFO"; + break; + } + ef.open('a',true); + ef.writeln(system.timestr() + ": " + log_type + ": " + message); + ef.close(); + } +}; +