winston.js 1019 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // This reporter is compatible with Winston 3
  2. // https://github.com/winstonjs/winston
  3. // eslint-disable-next-line
  4. const _require = typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : require // bypass webpack
  5. export default class WinstonReporter {
  6. constructor (logger) {
  7. if (logger && logger.log) {
  8. this.logger = logger
  9. } else {
  10. const winston = _require('winston')
  11. this.logger = winston.createLogger(Object.assign({
  12. level: 'info',
  13. format: winston.format.simple(),
  14. transports: [
  15. new winston.transports.Console()
  16. ]
  17. }, logger))
  18. }
  19. }
  20. log (logObj) {
  21. const args = [].concat(logObj.args)
  22. const arg0 = args.shift()
  23. this.logger.log({
  24. level: levels[logObj.level] || 'info',
  25. label: logObj.tag,
  26. message: arg0,
  27. args: args,
  28. timestamp: logObj.date.getTime() / 1000
  29. })
  30. }
  31. }
  32. const levels = {
  33. 0: 'error',
  34. 1: 'warn',
  35. 2: 'info',
  36. 3: 'verbose',
  37. 4: 'debug',
  38. 5: 'silly'
  39. }