logger.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. Meteor.startup(() => {
  2. Winston = require('winston');
  3. require('winston-zulip');
  4. const fs = require('fs');
  5. const loggerEnable = process.env.LOGGER_ENABLE || false;
  6. if (loggerEnable) {
  7. Winston.log('info', 'logger is enable');
  8. const loggers = process.env.LOGGERS.split(',') || 'console';
  9. Winston.log('info', `Loggers selected : ${ process.env.LOGGERS }, if empty default is console`);
  10. if (loggers.includes('console')) {
  11. Winston.add(Winston.transports.Console, {
  12. json: true,
  13. timestamp: true,
  14. });
  15. } else {
  16. //remove default logger
  17. Winston.remove(Winston.transports.Console);
  18. }
  19. if (loggers.includes('file')) {
  20. //create logs directory
  21. fs.mkdir('logs', (err) => {
  22. if (err) throw err;
  23. });
  24. const fileName = `logs/${process.env.LOGGER_FILE_NAME}` || 'logs/server.log';
  25. Winston.add(Winston.transports.File, {
  26. filename: fileName,
  27. json: true,
  28. options: {
  29. flags: 'a+',
  30. },
  31. });
  32. }
  33. if (loggers.includes('zulip')) {
  34. const loggerZulipUsername = process.env.LOGGER_ZULIP_USERNAME;
  35. const loggerZulipApikey = process.env.LOGGER_ZULIP_APIKEY;
  36. const loggerZulipRealm = process.env.LOGGER_ZULIP_REALM;
  37. const loggerZulipTo = process.env.LOGGER_ZULIP_TO || 'logs';
  38. const loggerZulipSubject = process.env.LOGGER_ZULIP_SUBJECT || 'wekan';
  39. const zulipConfig = {
  40. zulipUsername: loggerZulipUsername,
  41. zulipApikey: loggerZulipApikey,
  42. zulipRealm: loggerZulipRealm,
  43. zulipTo: loggerZulipTo,
  44. zulipSubject: loggerZulipSubject,
  45. };
  46. Winston.add(Winston.transports.Zulip, zulipConfig);
  47. Winston.log('info', `zulipconfig ${zulipConfig}`);
  48. }
  49. } else {
  50. //remove default logger
  51. Winston.remove(Winston.transports.Console);
  52. }
  53. Winston.log('info', 'Logger is completly instanciate');
  54. });