| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- class Task {
- context
- delayTime
- name
- logger
- fileLogger
- constructor(taskName, delayTime, initFun, onTickFun, logFilePath='task.log') {
- this.name = taskName
- this.delayTime = delayTime
- this.init = initFun
- this.onTick = onTickFun
- this.consoleLoggerInit()
- this.fileLoggerInit(logFilePath)
- }
- consoleLoggerInit() {
- const log4js = require('log4js')
- this.logger = log4js.getLogger(this.name)
- this.logger.level = log4js.levels.TRACE
- }
- fileLoggerInit(logFilePath) {
- const log4js = require('log4js')
- log4js.configure({
- appenders: {
- main: {
- type: 'file',
- filename: logFilePath
- }
- },
- categories: {
- default: {
- appenders: ['main'],
- level: log4js.levels.TRACE
- }
- }
- })
- this.fileLogger = log4js.getLogger(this.name)
- this.fileLogger.level = log4js.levels.TRACE
- }
- async Start() {
- const task = this
- this.logger.info(`Init context or others.`)
- await this.init()
- this.logger.info(`Dida dida dida, on tick, on tick...`)
- this.interval = setInterval(async () => {
- try {
- await task.onTick()
- } catch (e) {
- task.logger.error(e)
- }
- }, this.delayTime)
- }
- async Stop() {
- clearInterval(this.interval)
- }
- }
- module.exports = Task
|