Skip to content

Commit

Permalink
(refactor) logger no longer singleton
Browse files Browse the repository at this point in the history
(refactor) logger
(inc) patch version
(add) proper logger passing
(clean) old data
(fix) some code styling
  • Loading branch information
jstty committed Nov 29, 2016
1 parent 6bb904c commit 8387b32
Show file tree
Hide file tree
Showing 19 changed files with 320 additions and 302 deletions.
23 changes: 22 additions & 1 deletion legacy/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,30 @@

module.exports = {
env: 'dev',
serviceManager: {
silent: false,
displayDebuggerInfo: false
},
httpFramework: {
port: 8000,
silent: false,
displayDebuggerInfo: false
},
hyper: {
logger: { // logz options
name: 'HyperServiceManager'
name: 'Hyper',
group: {
autoIndent: true,
indent: {
// https://github.com/jamestalmage/cli-table2/blob/master/src/utils.js
start: '└─┐',
line: ' ├',
end: '┌─┘',
inner: ' ',
split: ' ',
join: ' '
}
}
},
displayDebuggerInfo: false,
httpFramework: 'express' // TODO: make this an object
Expand Down
12 changes: 5 additions & 7 deletions legacy/http.framework.express.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,14 @@ var session = require('express-session'); // aka. express.session
var mime = require('mime');

//
var Util = require('./util.js');
var util = require('./util.js');
var logger = null;

module.exports = HttpFrameworkExpress;

// TODO: add https support
function HttpFrameworkExpress(options, $stats) {
function HttpFrameworkExpress(options, $logger, $stats) {
this._options = _.merge({
env: 'dev',
port: 8000,
compress: true,
urlencoded: true,
parser: {
Expand All @@ -45,7 +43,7 @@ function HttpFrameworkExpress(options, $stats) {

this._stats = $stats;

logger = Util.logger('Express');
logger = util.logger({ name: '~Express' }, $logger);

this._app = express();
this._server = null;
Expand Down Expand Up @@ -108,7 +106,7 @@ HttpFrameworkExpress.prototype.load = function () {
logger.info('Enabling Sessions');

var defaultSession = {
secret: Util.string.random(32),
secret: util.string.random(32),
resave: false, // depends on the session store, see https://github.com/expressjs/session#resave
saveUninitialized: false, // depends on several cases, see https://github.com/expressjs/session#saveuninitialized
cookie: {
Expand Down Expand Up @@ -340,7 +338,7 @@ HttpFrameworkExpress.prototype.validateInputs = function (cInput, req) {
}
// check type
else if (req[i].hasOwnProperty(k) && cInput[i][k].type) {
var tFuncName = 'is' + Util.String.capitalize(cInput[i][k].type);
var tFuncName = 'is' + util.String.capitalize(cInput[i][k].type);
// check if lodash has type function
if (_[tFuncName]) {
// check if input passes type function
Expand Down
77 changes: 28 additions & 49 deletions legacy/hyper.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,8 @@ var PluginManager = require('yanpm');
var ServiceManager = require('./manager.service.js');
var ServiceMiddlewareManager = require('./service.middleware/service.middleware.manager.js');
var util = require('./util.js');
var hyperConfigs = require('./config.js');

//
var logger = null;
// for singleton behavior, single instance of hyper globally
var _hyper = null;

Expand Down Expand Up @@ -80,13 +79,10 @@ function Hyper(options) {
this._displayDebuggerInfo = options.displayDebuggerInfo || false;

// default
var configs = ['$/config.json', // framework dir (default)
'$/config.js' // framework dir (default)
var configs = ['$/config.js' // framework dir (default)
];

// get server filename
this._defaultAppName = options.appName || path.basename(require.main.filename, '.js');

configs.push('config.json'); // current dir
configs.push('config.js'); // current dir
configs.push(this._defaultAppName + '.config.json'); // current dir
Expand All @@ -108,18 +104,19 @@ function Hyper(options) {
this._servicesManifest = {};
this._isLoaded = false;

// set logger
logger = util.logger('HyperCore');

// ------------------------------
// normalize options
this._options = _.merge(_.cloneDeep(hyperConfigs), this._options);
this._options = this._normalizeOptions(this._options);
// logger.info('options:', JSON.stringify(this._options, null, 2));
// this._logger.info('options:', JSON.stringify(this._options, null, 2));
// ------------------------------

// set logger
this._logger = util.logger(this._options.hyper.logger);

// middleware manager
this._pluginManager = new PluginManager({
logger: logger
logger: this._logger
});

this._serviceMiddlewareManager = new ServiceMiddlewareManager();
Expand All @@ -129,37 +126,20 @@ function Hyper(options) {

// add catch all, just in case
process.on('uncaughtException', function (err) {
logger.error('Uncaught Error -', err, ', stack:', err.stack);
this._logger.error('Uncaught Error -', err, ', stack:', err.stack);
});
}

Hyper.prototype.env = function (env) {
if (env) {
this._options.serviceManager.env = env;
this._options.httpFramework.env = env;
this._config.serviceManager.env = env;
this._config.httpFramework.env = env;
}

return this._options.serviceManager.env;
return this._config.serviceManager.env;
};

Hyper.prototype._normalizeOptions = function (options) {
options = _.merge({
serviceManager: {
env: 'dev',
silent: false,
displayDebuggerInfo: false
},
httpFramework: {
env: 'dev',
port: 8000,
silent: false,
displayDebuggerInfo: false
},
hyper: {
displayDebuggerInfo: false
}
}, options);

if (options.env) {
options.serviceManager.env = options.env;
options.httpFramework.env = options.env;
Expand All @@ -184,14 +164,16 @@ Hyper.prototype._normalizeOptions = function (options) {
options.serviceManager.silent = true;
delete options.silent;

logger.setEnv('prod');
options.serviceManager.env = 'prod';
options.httpFramework.env = options.serviceManager.env;
options.hyper.logger.env = options.serviceManager.env;
}

return options;
};

Hyper.prototype.logger = function () {
return util.logger();
return this._logger;
};

Hyper.prototype.resource = function () {
Expand All @@ -203,33 +185,32 @@ Hyper.prototype.resource = function () {
Hyper.prototype._loadConfigs = function (servicesManifest) {
// config manager
// logger not loaded, yet so we can only user console
logger.log('---------------------------------------------');
logger.group('Loading Configuration...');
this._logger.group('Loading Configuration...');
this._configManager = new Transfuser({
basePath: __dirname,
logger: logger
logger: this._logger
});
// blocking, but this is ok because the server needs the configs to proceed
this._config = this._configManager.loadSync(this._options.configs, !this._displayDebuggerInfo);
// normalize configs
this._config = this._normalizeOptions(this._config);
logger.groupEnd('');
this._logger.groupEnd('');

// add options passed in from inits
this._config.appName = this._options.appName;
this._config.hyper = _.merge(this._config.hyper, this._options.hyper);
this._config.serviceManager = _.merge(this._config.serviceManager, this._options.serviceManager);
this._config.httpFramework = _.merge(this._config.httpFramework, this._options.httpFramework);
// TODO: add to verbose
// logger.info('config:', JSON.stringify(this._config, null, 2));
// this._logger.info('config:', JSON.stringify(this._config, null, 2));

//
if (this._config.hyper.hasOwnProperty('displayDebuggerInfo')) {
this._displayDebuggerInfo = this._config.hyper.displayDebuggerInfo;
}

// update logger options, using config
logger.setOptions(this._config.hyper.logger);
this._logger.setOptions(this._config.hyper.logger);

// service config
this._servicesManifest = servicesManifest;
Expand All @@ -250,7 +231,7 @@ Hyper.prototype.load = function (servicesManifest) {
// init service manager and router
this._initServiceManager();

// logger.info("process:", JSON.stringify(process.versions, null, 2));
// this._logger.info("process:", JSON.stringify(process.versions, null, 2));

// done loading plugins, now load http framework
this._serviceManager.loadHttpFramework().then(function () {
Expand All @@ -267,7 +248,7 @@ Hyper.prototype.httpServerListen = function () {
// ------------------------------------------------

this._httpServer.listen(this._httpFramework.port(), function () {
logger.log('Listening on port %d', this._httpFramework.port());
this._logger.log('Listening on port %d', this._httpFramework.port());
resolve();
}.bind(this));

Expand All @@ -283,20 +264,18 @@ Hyper.prototype._start = function () {
}.bind(this)).then(function () {
return this._serviceManager.postStartInit();
}.bind(this)).then(function () {
logger.log('---------------------------------------------');
logger.log('Ready to accept connections on port', this._httpFramework.port());
logger.log('---------------------------------------------');
this._logger.log('---------------------------------------------');
this._logger.log('Ready to accept connections on port', this._httpFramework.port());
this._logger.log('---------------------------------------------');
return this;
}.bind(this));
};

Hyper.prototype.start = function (servicesManifest) {
if (this._isLoaded) {
logger.log('---------------------------------------------');
return this._start();
} else {
return this.load(servicesManifest).then(function () {
logger.log('---------------------------------------------');
return this._start();
}.bind(this));
}
Expand Down Expand Up @@ -339,9 +318,9 @@ Hyper.prototype._initHttpFramework = function () {
// load HTTP framework
if (this._config.hyper.httpFramework === 'express') {
// TODO: use DI to pass vars
this._httpFramework = new HttpFrameworkExpress(this._config.httpFramework, this._stats);
this._httpFramework = new HttpFrameworkExpress(this._config.httpFramework, this._logger, this._stats);
} else {
logger.error('Unknown HTTP Framework');
this._logger.error('Unknown HTTP Framework');
return;
}

Expand Down
5 changes: 2 additions & 3 deletions legacy/manager.middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ module.exports = Middleware;
/* ---------------------------------------------------
* Constructor
* --------------------------------------------------- */
function Middleware() {
logger = util.logger('Middleware');
function Middleware(options) {
logger = util.logger({ name: 'Middleware', env: options.env });

this.middleware = {};

Expand Down Expand Up @@ -213,7 +213,6 @@ Middleware.prototype._setMiddleware = function (MiddlewareClass) {
// set it as default
this._setDefault(mInfo.type, mInfo.name);

logger.log('---------------------------------------------');
logger.log('Loaded Middleware (' + mInfo.type + ', ' + mInfo.name + ')');
}

Expand Down
5 changes: 2 additions & 3 deletions legacy/manager.service.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ var logger = null;

var ServiceManagerConfig = function () {
// var appName = this._config.appName || this._defaultAppName;
function ServiceManagerConfig(appName, config) {
function ServiceManagerConfig(appName, $logger, config) {
(0, _classCallCheck3.default)(this, ServiceManagerConfig);

this._appName = appName;
Expand All @@ -30,8 +30,7 @@ var ServiceManagerConfig = function () {
this._config = {};
}

logger = util.logger('ServicesConfig');

logger = util.logger({ name: 'ServicesConfig' }, $logger);
this._normalize();
}

Expand Down

0 comments on commit 8387b32

Please sign in to comment.