logger.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. 'use strict'
  2. /* global wiki */
  3. module.exports = (processName) => {
  4. let winston = require('winston')
  5. if (typeof processName === 'undefined') {
  6. processName = 'SERVER'
  7. }
  8. // Console
  9. let logger = new (winston.Logger)({
  10. level: (wiki.IS_DEBUG) ? 'debug' : 'info',
  11. transports: [
  12. new (winston.transports.Console)({
  13. level: (wiki.IS_DEBUG) ? 'debug' : 'info',
  14. prettyPrint: true,
  15. colorize: true,
  16. silent: false,
  17. timestamp: true
  18. })
  19. ]
  20. })
  21. logger.filters.push((level, msg) => {
  22. return '[' + processName + '] ' + msg
  23. })
  24. // External services
  25. if (wiki.config.externalLogging.bugsnag) {
  26. const bugsnagTransport = require('./winston-transports/bugsnag')
  27. logger.add(bugsnagTransport, {
  28. level: 'warn',
  29. key: wiki.config.externalLogging.bugsnag
  30. })
  31. }
  32. if (wiki.config.externalLogging.loggly) {
  33. require('winston-loggly-bulk')
  34. logger.add(winston.transports.Loggly, {
  35. token: wiki.config.externalLogging.loggly.token,
  36. subdomain: wiki.config.externalLogging.loggly.subdomain,
  37. tags: ['wiki-js'],
  38. level: 'warn',
  39. json: true
  40. })
  41. }
  42. if (wiki.config.externalLogging.papertrail) {
  43. require('winston-papertrail').Papertrail // eslint-disable-line no-unused-expressions
  44. logger.add(winston.transports.Papertrail, {
  45. host: wiki.config.externalLogging.papertrail.host,
  46. port: wiki.config.externalLogging.papertrail.port,
  47. level: 'warn',
  48. program: 'wiki.js'
  49. })
  50. }
  51. if (wiki.config.externalLogging.rollbar) {
  52. const rollbarTransport = require('./winston-transports/rollbar')
  53. logger.add(rollbarTransport, {
  54. level: 'warn',
  55. key: wiki.config.externalLogging.rollbar
  56. })
  57. }
  58. if (wiki.config.externalLogging.sentry) {
  59. const sentryTransport = require('./winston-transports/sentry')
  60. logger.add(sentryTransport, {
  61. level: 'warn',
  62. key: wiki.config.externalLogging.sentry
  63. })
  64. }
  65. return logger
  66. }