task.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const LoggerKit = require('../kit/logger-kit')
  2. const log4js = require('log4js')
  3. class Task {
  4. context
  5. delayTime
  6. name
  7. logger
  8. fileLogger
  9. constructor(taskName, delayTime, initFun, onTickFun) {
  10. this.name = taskName
  11. this.delayTime = delayTime
  12. this.init = initFun
  13. this.onTick = onTickFun
  14. this.consoleLoggerInit()
  15. this.fileLoggerInit(this.name.concat('Task.log'))
  16. }
  17. consoleLoggerInit() {
  18. this.logger = LoggerKit.getLogger(this.name)
  19. }
  20. fileLoggerInit(logFilePath) {
  21. const logFileCategoryName = this.name.concat('FileLog')
  22. const appender = { type: 'file', filename: logFilePath }
  23. const category = { appenders: [logFileCategoryName], level: log4js.levels.TRACE }
  24. LoggerKit.pushAppender(logFileCategoryName, appender)
  25. this.fileLogger = LoggerKit.pushCategory(logFileCategoryName, category)
  26. this.fileLogger.info('File logger has init.')
  27. }
  28. async Start() {
  29. const task = this
  30. this.logger.info(`Init context or others.`)
  31. await this.init()
  32. this.logger.info(`Dida dida dida, on tick, on tick...`)
  33. this.interval = setInterval(async () => {
  34. try {
  35. await task.onTick()
  36. } catch (e) {
  37. task.logger.error(e)
  38. }
  39. }, this.delayTime)
  40. }
  41. async Stop() {
  42. clearInterval(this.interval)
  43. }
  44. }
  45. module.exports = Task