summaryrefslogtreecommitdiffstats
path: root/server/logger.js
blob: 70caa2929fc0ab49ef825c08b4a795cad10ac960 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Meteor.startup(() => {
  Winston = require('winston');
  require('winston-zulip');
  const fs = require('fs');

  const loggerEnable = process.env.LOGGER_ENABLE || false;
  if (loggerEnable) {

    Winston.log('info', 'logger is enable');
    const loggers = process.env.LOGGERS.split(',') || 'console';
    Winston.log('info',  `Loggers selected : ${ process.env.LOGGERS }, if empty default is console`);

    if (loggers.includes('console')) {
      Winston.add(Winston.transports.Console, {
        json: true,
        timestamp: true,
      });
    } else {
      //remove default logger
      Winston.remove(Winston.transports.Console);
    }

    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';

      const zulipConfig = {
        zulipUsername: loggerZulipUsername,
        zulipApikey: loggerZulipApikey,
        zulipRealm: loggerZulipRealm,
        zulipTo: loggerZulipTo,
        zulipSubject: loggerZulipSubject,
      };

      Winston.add(Winston.transports.Zulip, zulipConfig);

      Winston.log('info', `zulipconfig ${zulipConfig}`);
    }

  } else {
    //remove default logger
    Winston.remove(Winston.transports.Console);
  }
  Winston.log('info', 'Logger is completly instanciate');
});