Skip to content
This repository was archived by the owner on Dec 14, 2023. It is now read-only.

Commit f1119c7

Browse files
committed
use logger to catch fatal errors rather then console
1 parent 8b1475d commit f1119c7

File tree

3 files changed

+43
-44
lines changed

3 files changed

+43
-44
lines changed

config/config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ module.exports = function (options) {
5151
}
5252
}
5353
},
54-
54+
log: options && options.log ? options.log : undefined,
5555
'recaptcha_secret_key': process.env.RECAPTCHA_SECRET_KEY || '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe',
5656
transport: {
5757
type: 'web',

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"covrep": "bash test/covrep.sh",
1313
"lint": "./node_modules/.bin/semistandard *.js config/config.js",
1414
"start": "node service.js",
15-
"dev": "nodemon service.js"
15+
"dev": "nodemon service.js | bunyan"
1616
},
1717
"pre-commit": [
1818
"test"

service.js

+41-42
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22
process.setMaxListeners(0);
33
require('events').EventEmitter.prototype._maxListeners = 100;
44

5-
const newrelic = process.env.NEW_RELIC_ENABLED === 'true' ? require('newrelic') : undefined;
6-
const senecaNR = require('seneca-newrelic');
7-
var config = require('./config/config.js')();
5+
if (process.env.NEW_RELIC_ENABLED === 'true') require('newrelic');
6+
7+
const service = 'cp-users-service';
8+
const { logger, log } = require('cp-logs-lib')({
9+
name: service,
10+
level: process.env.NODE_ENV === 'production' ? 'warn' : 'info',
11+
});
12+
const config = require('./config/config.js')({ log });
813
var seneca = require('seneca')(config);
914
var _ = require('lodash');
1015
var store = require('seneca-postgresql-store');
1116
var storeQuery = require('seneca-store-query');
12-
var service = 'cp-users-service';
13-
var log = require('cp-logs-lib')({name: service, level: 'warn'});
14-
config.log = log.log;
1517
var util = require('util');
1618
var dgram = require('dgram');
1719

18-
if (process.env.NODE_ENV !== 'production') {
19-
seneca.log.info('using config', JSON.stringify(config, null, 4));
20-
}
20+
logger.info(config, 'config');
2121

2222
seneca.options(config);
2323
seneca.decorate('customValidatorLogFormatter', require('./lib/custom-validator-log-formatter'));
@@ -29,60 +29,55 @@ if (process.env.MAILDEV_ENABLED === 'true') {
2929
seneca.use('mail', config.email);
3030
}
3131

32-
function shutdown (err) {
32+
function shutdown(err) {
3333
if (err !== undefined) {
34-
var error = {
35-
date: new Date().toString(),
36-
msg: err.stack !== undefined
34+
logger.error(
35+
err,
36+
err.stack !== undefined
3737
? 'FATAL: UncaughtException, please report: ' + util.inspect(err.stack)
3838
: 'FATAL: UncaughtException, no stack trace',
39-
err: util.inspect(err)
40-
};
41-
console.error(JSON.stringify(error));
39+
);
4240
process.exit(1);
4341
}
4442
process.exit(0);
4543
}
4644

4745
require('./migrate-psql-db.js')(function (err) {
48-
if (err) {
49-
console.error(err);
50-
process.exit(-1);
51-
}
52-
console.log('Migrations ok');
46+
if (err) shutdown(err);
47+
logger.info('Migrations ok');
5348

5449
seneca.use(require('./email-notifications.js'));
5550
seneca.use(require('./lib/agreements'));
56-
seneca.use(require('./profiles.js'),
57-
{ postgresql: config['postgresql-store'],
58-
logger: log.logger
59-
});
60-
seneca.use(require('./oauth2.js'), {clients: config.oauth2.clients});
51+
seneca.use(require('./profiles.js'), {
52+
postgresql: config['postgresql-store'],
53+
logger,
54+
});
55+
seneca.use(require('./oauth2.js'), { clients: config.oauth2.clients });
6156
seneca.use('user');
6257
seneca.use('auth');
63-
seneca.use(require('./users.js'),
64-
{ 'email-notifications': config['email-notifications'],
65-
'postgresql': config['postgresql-store'],
66-
'users': config['users'],
67-
'logger': log.logger
68-
});
69-
seneca.use(require('./user-profile.js'),
70-
{ postgresql: config['postgresql-store'],
71-
logger: log.logger
72-
});
58+
seneca.use(require('./users.js'), {
59+
'email-notifications': config['email-notifications'],
60+
postgresql: config['postgresql-store'],
61+
users: config['users'],
62+
logger,
63+
});
64+
seneca.use(require('./user-profile.js'), {
65+
postgresql: config['postgresql-store'],
66+
logger,
67+
});
7368
seneca.use(require('./nodebb-api.js'), config.nodebb);
7469
seneca.use(require('cp-permissions-plugin'), {
75-
config: __dirname + '/config/permissions'
70+
config: __dirname + '/config/permissions',
7671
});
7772
if (!_.isUndefined(newrelic)) {
7873
seneca.use(senecaNR, {
7974
newrelic,
8075
roles: ['cd-users', 'cd-profiles', 'cd-oauth2', 'cd-user-profile'],
81-
filter (p) {
76+
filter(p) {
8277
p.user = p.user ? p.user.id : undefined;
8378
p.login = p.login ? p.login.id : undefined;
8479
return p;
85-
}
80+
},
8681
});
8782
}
8883
process.on('SIGINT', shutdown);
@@ -103,10 +98,14 @@ require('./migrate-psql-db.js')(function (err) {
10398

10499
var escape = require('seneca-standard-query/lib/relational-util').escapeStr;
105100
['load', 'list'].forEach(function (cmd) {
106-
seneca.wrap('role: entity, cmd: ' + cmd, function filterFields (args, cb) {
101+
seneca.wrap('role: entity, cmd: ' + cmd, function filterFields(args, cb) {
107102
try {
108103
['limit$', 'skip$'].forEach(function (field) {
109-
if (args.q[field] && args.q[field] !== 'NULL' && !/^[0-9]+$/g.test(args.q[field] + '')) {
104+
if (
105+
args.q[field] &&
106+
args.q[field] !== 'NULL' &&
107+
!/^[0-9]+$/g.test(args.q[field] + '')
108+
) {
110109
throw new Error('Expect limit$, skip$ to be a number');
111110
}
112111
});
@@ -124,7 +123,7 @@ require('./migrate-psql-db.js')(function (err) {
124123
}
125124
if (args.q.fields$) {
126125
args.q.fields$.forEach(function (field, index) {
127-
args.q.fields$[index] = '\"' + escape(field) + '\"';
126+
args.q.fields$[index] = '"' + escape(field) + '"';
128127
});
129128
}
130129
// Loop over each props

0 commit comments

Comments
 (0)