From 00a357cd7067cf5c8b055deacfe2e9bc28b06c5e Mon Sep 17 00:00:00 2001 From: huneau romain Date: Wed, 19 Apr 2017 16:16:31 +0200 Subject: add console, file, and zulip logger on database changes --- .eslintrc.json | 6 ++- package.json | 2 + server/logger.js | 59 ++++++++++++++++++++++++++ server/observableChanges.js | 100 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 server/logger.js create mode 100644 server/observableChanges.js diff --git a/.eslintrc.json b/.eslintrc.json index 416548eb..bb26c208 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -51,7 +51,8 @@ "object-shorthand": 2, "prefer-const": 2, "prefer-spread": 2, - "prefer-template": 2 + "prefer-template": 2, + "no-console":"off" }, "globals": { "Meteor": false, @@ -122,6 +123,7 @@ "Emoji": true, "Checklists": true, "Settings": true, - "InvitationCodes": true + "InvitationCodes": true, + "Winston":true } } diff --git a/package.json b/package.json index c7548af3..2b0f7b6e 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,8 @@ "dependencies": { "babel-runtime": "^6.23.0", "meteor-node-stubs": "^0.2.6", + "winston": "^2.3.1", + "winston-zulip": "0.0.6", "xss": "^0.3.3" } } diff --git a/server/logger.js b/server/logger.js new file mode 100644 index 00000000..376e30aa --- /dev/null +++ b/server/logger.js @@ -0,0 +1,59 @@ +Meteor.startup(() => { + Winston = require('winston'); + require('winston-zulip'); + const fs = require('fs'); + + //remove default logger + Winston.remove(Winston.transports.Console); + + + const loggerEnable = process.env.LOGGER_ENABLE || false; + console.log('here1'); + console.log(loggerEnable); + if (loggerEnable) { + console.log('here2'); + const loggers = process.env.LOGGERS.split(',') || 'console'; + + if (loggers.includes('console')) { + Winston.add(Winston.transports.Console, { + json: true, + timestamp: true, + }); + } + + if (loggers.includes('file')) { + //create logs directory + fs.mkdir('logs', (err) => { + if (err) throw err; + }); + + const fileName = `logs/${process.env.LOGGER_FILE_NAME}` || 'logs/server.log'; + + Winston.add(Winston.transports.File, { + filename: fileName, + json: true, + options: { + flags: 'a+', + }, + }); + } + + if (loggers.includes('zulip')) { + const loggerZulipUsername = process.env.LOGGER_ZULIP_USERNAME; + const loggerZulipApikey = process.env.LOGGER_ZULIP_APIKEY; + const loggerZulipRealm = process.env.LOGGER_ZULIP_REALM; + const loggerZulipTo = process.env.LOGGER_ZULIP_TO || 'logs'; + const loggerZulipSubject = process.env.LOGGER_ZULIP_SUBJECT || 'wekan'; + + Winston.add(Winston.transports.Zulip, { + zulipUsername: loggerZulipUsername, + zulipApikey: loggerZulipApikey, + zulipRealm: loggerZulipRealm, + zulipTo: loggerZulipTo, + zulipSubject: loggerZulipSubject, + }); + } + + } +}); + diff --git a/server/observableChanges.js b/server/observableChanges.js new file mode 100644 index 00000000..390ae093 --- /dev/null +++ b/server/observableChanges.js @@ -0,0 +1,100 @@ +class Message { + constructor(userId, type, method, doc, selector, fieldNames, modifier) { + this.userId = userId; + this.type = type; + this.method = method; + this.doc = doc; + this.selector; + this.fieldNames = fieldNames; + this.modifier = modifier; + } + +} + +//------------- CARDS -------------------- +Cards.before.update(function (userId, doc, fieldNames, modifier, options) { + Winston.log('info', new Message(userId, 'card', 'update', doc, null, fieldNames, modifier)); +}); + +Cards.before.remove(function (userId, doc) { + Winston.log('info', new Message(userId, 'card', 'remove', doc)); +}); + +Cards.before.insert(function (userId, doc) { + Winston.log('info', new Message(userId, 'card', 'insert', doc)); +}); + +Cards.before.upsert(function (userId, selector, modifier, options) { + Winston.log('info', new Message(userId, 'card', 'update', null, selector, null, modifier)); +}); + + +//------------- BOARDS -------------------- +Boards.before.update(function (userId, doc, fieldNames, modifier, options) { + Winston.log('info', new Message(userId, 'board', 'update', doc, null, fieldNames, modifier)); +}); + +Boards.before.remove(function (userId, doc) { + Winston.log('info', new Message(userId, 'board', 'remove', doc)); +}); + +Boards.before.insert(function (userId, doc) { + Winston.log('info', new Message(userId, 'board', 'insert', doc)); +}); + +Boards.before.upsert(function (userId, selector, modifier, options) { + Winston.log('info', new Message(userId, 'board', 'update', null, selector, null, modifier)); +}); + +//------------- LISTS -------------------- +Lists.before.update(function (userId, doc, fieldNames, modifier, options) { + Winston.log('info', new Message(userId, 'list', 'update', doc, null, fieldNames, modifier)); +}); + +Lists.before.remove(function (userId, doc) { + Winston.log('info', new Message(userId, 'list', 'remove', doc)); +}); + +Lists.before.insert(function (userId, doc) { + Winston.log('info', new Message(userId, 'list', 'insert', doc)); +}); + +Lists.before.upsert(function (userId, selector, modifier, options) { + Winston.log('info', new Message(userId, 'list', 'update', null, selector, null, modifier)); +}); + + +//------------- CARD COMMENTS -------------------- +CardComments.before.update(function (userId, doc, fieldNames, modifier, options) { + Winston.log('info', new Message(userId, 'card-comments', 'update', doc, null, fieldNames, modifier)); +}); + +CardComments.before.remove(function (userId, doc) { + Winston.log('info', new Message(userId, 'card-comments', 'remove', doc)); +}); + +CardComments.before.insert(function (userId, doc) { + Winston.log('info', new Message(userId, 'card-comments', 'insert', doc)); +}); + +CardComments.before.upsert(function (userId, selector, modifier, options) { + Winston.log('info', new Message(userId, 'card-comments', 'update', null, selector, null, modifier)); +}); + + +//------------- USERS -------------------- +Users.before.update(function (userId, doc, fieldNames, modifier, options) { + Winston.log('info', new Message(userId, 'user', 'update', doc, null, fieldNames, modifier)); +}); + +Users.before.remove(function (userId, doc) { + Winston.log('info', new Message(userId, 'user', 'remove', doc)); +}); + +Users.before.insert(function (userId, doc) { + Winston.log('info', new Message(userId, 'user', 'insert', doc)); +}); + +Users.before.upsert(function (userId, selector, modifier, options) { + Winston.log('info', new Message(userId, 'user', 'update', null, selector, null, modifier)); +}); -- cgit v1.2.3-1-g7c22 From 34089b12223b087e5969ee342b4f542ec25c0fa8 Mon Sep 17 00:00:00 2001 From: huneau romain Date: Wed, 19 Apr 2017 16:51:26 +0200 Subject: toggle no-unused-vars to warn --- .eslintrc.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index bb26c208..2aab7b6f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -52,7 +52,8 @@ "prefer-const": 2, "prefer-spread": 2, "prefer-template": 2, - "no-console":"off" + "no-console":"off", + "no-unused-vars":"warn" }, "globals": { "Meteor": false, -- cgit v1.2.3-1-g7c22 From 7a94824084a05ced51671b13739dfaf0c9cf14e5 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 27 Apr 2017 20:40:07 +0300 Subject: Add some packages. --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 2b0f7b6e..6ceb6e29 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,9 @@ }, "dependencies": { "babel-runtime": "^6.23.0", + "bcrypt": "^1.0.2", + "bson": "^1.0.4", + "es6-promise": "^4.1.0", "meteor-node-stubs": "^0.2.6", "winston": "^2.3.1", "winston-zulip": "0.0.6", -- cgit v1.2.3-1-g7c22