2
0

logger.js 1.8 KB

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