| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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)
- }
- fileLoggerInit(logFilePath) {
- const log4js = require('log4js')
- const logFileCategoryName = this.name + 'FileLog'
- const appenders = {}
- appenders['default'] = {
- type: 'console'
- }
- appenders[logFileCategoryName] = {
- type: 'file',
- filename: logFilePath
- }
- const categories = {}
- categories['default'] = {
- appenders: ['default'],
- level: log4js.levels.TRACE
- }
- categories[logFileCategoryName] = {
- appenders: [logFileCategoryName],
- level: log4js.levels.TRACE
- }
- const config = {
- appenders: appenders,
- categories: categories
- }
- log4js.configure(config)
- this.fileLogger = log4js.getLogger(logFileCategoryName)
- 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
|