task.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. }
  27. async Start() {
  28. const task = this
  29. this.logger.info(`Init context or others.`)
  30. await this.init()
  31. this.logger.info(`Dida dida dida, on tick, on tick...`)
  32. this.interval = setInterval(async () => {
  33. try {
  34. await task.onTick()
  35. } catch (e) {
  36. task.logger.error(e)
  37. }
  38. }, this.delayTime)
  39. }
  40. async Stop() {
  41. clearInterval(this.interval)
  42. }
  43. }
  44. module.exports = Task