add logger helper for modules

This commit is contained in:
Stewart Allen 2020-03-06 21:50:11 -05:00
commit 6602ff6d93

View file

@ -730,6 +730,7 @@ let ver = require('../js/license.js'),
url = require('url'), url = require('url'),
dns = require('dns'), dns = require('dns'),
util = require('util'), util = require('util'),
path = require('path'),
valid = require('validator'), valid = require('validator'),
agent = require('express-useragent'), agent = require('express-useragent'),
spawn = require('child_process').spawn, spawn = require('child_process').spawn,
@ -994,6 +995,10 @@ function initModule(file, dir) {
args: args, args: args,
debug: debug debug: debug
}, },
pkg: {
agent,
moment
},
util: { util: {
log: helper.log, log: helper.log,
time: time, time: time,
@ -1002,7 +1007,8 @@ function initModule(file, dir) {
lastmod: lastmod, lastmod: lastmod,
obj2string: obj2string, obj2string: obj2string,
string2obj: string2obj, string2obj: string2obj,
getCookieValue: getCookieValue getCookieValue: getCookieValue,
logger: open_logger
}, },
db: { db: {
api: db, api: db,
@ -1090,6 +1096,50 @@ function ws_register_root(path, handler) {
} }
} }
function open_logger(options) {
let opt = options || {
dir: "logs"
}
let logfile = null;
let logstream = null;
let pattern = opt.pattern || 'YYMMDDHH';
let last_pattern;
try {
fs.mkdirSync(opt.dir);
} catch (e) { }
// create file write stream
function open_file_stream() {
close_file_stream();
logfile = path.join(opt.dir, last_pattern = moment().format(pattern));
logstream = fs.createWriteStream(logfile, {flags: 'a'});
}
function close_file_stream() {
if (logstream) {
logstream.close();
logstream = null;
}
}
function emit(obj) {
let next_pattern = moment().format(pattern);
if (next_pattern !== last_pattern) {
open_file_stream();
}
logstream.write(moment().format('YYMMDD-HHmmss'));
logstream.write(" ");
logstream.write(JSON.stringify(obj));
logstream.write("\n");
}
process.on('beforeExit', close_file_stream);
process.on('exit', close_file_stream);
return { emit, close: close_file_stream };
}
/* ********************************************* /* *********************************************
* Start it up * Start it up
********************************************* */ ********************************************* */
@ -1117,6 +1167,7 @@ modPaths.forEach(fn => {
handler = handler.use(fn); handler = handler.use(fn);
}); });
// add the rest of the handler chain // add the rest of the handler chain
handler.use(fullpath({ handler.use(fullpath({
"/meta/index.html" : redir("/meta/"), "/meta/index.html" : redir("/meta/"),