summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.eslintrc.json6
-rw-r--r--package.json2
-rw-r--r--server/logger.js59
-rw-r--r--server/observableChanges.js100
4 files changed, 165 insertions, 2 deletions
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));
+});