bc-schedule-server
Advanced tools
Comparing version 1.1.0 to 1.1.1
@@ -44,3 +44,3 @@ 'use strict'; | ||
for (const task of list) { | ||
if (util.isFunction(task) && !this.taskCacheList.has(task.name)) { | ||
if (util.isFunction(task) && task.name && !this.taskCacheList.has(task.name)) { | ||
this.taskCacheList.set(task.name, task); | ||
@@ -62,3 +62,3 @@ this.taskList.push(task.name); | ||
const localIp = util.getLocalIP(); | ||
console.log('\x1b[3m\x1b[34m \nccLog ——> \x1b[0m', `Server running on http://127.0.0.1:${port}; http://${localIp}:${port}`); | ||
console.log('\x1b[3m\x1b[34m \nccLog —>\x1b[0m', `Server running on\n http://127.0.0.1:${port}\n http://${localIp}:${port}`); | ||
const { callback } = this.options; | ||
@@ -135,3 +135,3 @@ if (typeof callback === 'function') { | ||
const { jobId, logId, logDateTime, executorHandler } = ctx.request.body; | ||
const logger = this.logInstance.create({ fileName: `${util.formatDate(logDateTime)}-xxl-job-${logId}` }); | ||
const logger = this.logInstance.create({ logDateTime, logId }); | ||
logger.info(`--- Job Task: ${jobId} is running: ${logId} ---`); | ||
@@ -138,0 +138,0 @@ this.runningTaskList.add(jobId); |
@@ -6,3 +6,4 @@ import { ExposeLogger, ILoggerType, IReadLogType, IReadResponse } from './types'; | ||
create(params: { | ||
fileName?: string; | ||
logDateTime?: number; | ||
logId?: number; | ||
isOpLog?: boolean; | ||
@@ -9,0 +10,0 @@ }): ExposeLogger; |
@@ -30,2 +30,3 @@ 'use strict'; | ||
}; | ||
const getFullFilename = (prefixPath, timestampe, logId) => path__default["default"].resolve(prefixPath, `./${util.formatDate(timestampe)}-xxl-job/${logId}.log`); | ||
class WLogger { | ||
@@ -37,3 +38,3 @@ constructor(options) { | ||
const { logPath = 'logs' } = this.options; | ||
const { fileName, isOpLog = false } = params; | ||
const { isOpLog = false, logDateTime, logId } = params; | ||
const logger = winston.createLogger({ | ||
@@ -51,9 +52,8 @@ format: winston.format.combine(...formatOptions[util.isLocal ? 'local' : 'prod']), | ||
datePattern: `YYYY-MM-DD`, | ||
zippedArchive: true, | ||
})); | ||
} | ||
else if (!util.isLocal) { | ||
const allFilename = path__default["default"].resolve(logPath, `./${fileName}.log`); | ||
else if (!util.isLocal && logDateTime && logId) { | ||
const filename = getFullFilename(logPath, logDateTime, logId); | ||
logger.add(new winston.transports.File({ | ||
filename: allFilename, | ||
filename, | ||
handleExceptions: true, | ||
@@ -71,8 +71,8 @@ })); | ||
const { logPath = 'logs' } = loggerInstance.options; | ||
const logFile = path__default["default"].resolve(logPath, `./${util.formatDate(logDateTim)}-xxl-job-${logId}.log`); | ||
if (!fs__default["default"].existsSync(logFile)) { | ||
const filename = getFullFilename(logPath, logDateTim, logId); | ||
if (!fs__default["default"].existsSync(filename)) { | ||
resolve({ findFlag: false, endFlag: true }); | ||
return; | ||
} | ||
const stream = fs__default["default"].createReadStream(logFile); | ||
const stream = fs__default["default"].createReadStream(filename); | ||
const rl = readline__default["default"].createInterface({ input: stream }); | ||
@@ -79,0 +79,0 @@ let lineNum = 0; |
{ | ||
"name": "bc-schedule-server", | ||
"version": "1.1.0", | ||
"version": "1.1.1", | ||
"description": "xxl-job koa server", | ||
@@ -24,3 +24,4 @@ "keywords": [ | ||
"scripts": { | ||
"dev": "nodemon src/index.ts", | ||
"dev:js": "nodemon src/js/index.js", | ||
"dev:ts": "nodemon src/ts/index.ts", | ||
"dev:lib": "cross-env NODE_ENV=development rollup -c build/rollup.config.js -w", | ||
@@ -27,0 +28,0 @@ "build": "rollup -c build/rollup.config.js", |
@@ -11,4 +11,34 @@ # bc-schedule-server | ||
### 其他 | ||
- 注册的函数不能是“箭头函数”和“匿名函数” | ||
- 本地开发时建议配置 NODE_ENV=local 这样就不会启用 log 文件日志,而是使用在控制台输出 | ||
### 使用方式 | ||
- typescript 引入方式 `import { BcScheduleServer } form 'bc-schedule-server'` | ||
- javascript 引入方式 `const { BcScheduleServer } require('bc-schedule-server')` | ||
``` | ||
import { BcScheduleServer } form 'bc-schedule-server' | ||
const schedule = new BcScheduleServer({ | ||
port: 9501, | ||
scheduleCenterUrl: 'https://xxljob.xxx.com' | ||
}) | ||
/** | ||
* 注册待调用的定时任务 | ||
* 注意:不能是 ()=>{} 和 function(){} 方式 | ||
*/ | ||
const fn = (logger: ExposeLogger) => { | ||
logger.info('# hahah') | ||
} | ||
const registered =schedule.registerTask([ | ||
fn, | ||
function fn2(logger, xxlJobParams) { | ||
logger.info('balabal') | ||
}, | ||
async function fn3(logger, xxlJobParams) {}, | ||
]) | ||
// 返回已经注册的任务函数列表 | ||
console.log(registered) // [ 'fn', 'fn2', 'fn3' ] | ||
``` | ||
### 配置参数 | ||
@@ -26,18 +56,29 @@ ``` | ||
} | ||
``` | ||
// 基本使用方式 | ||
import { BcScheduleServer } form 'bc-schedule-server' | ||
const schedule = new BcScheduleServer({ | ||
port: 9501, | ||
scheduleCenterUrl: 'https://xxljob.xxx.com' | ||
}) | ||
// 注册待调用的定时任务 | ||
schedule.registerTask([ | ||
function fn1(logger, xxlJobParams) { | ||
logger.info('balabal') | ||
}, | ||
async function fn2(logger, xxlJobParams) {}, | ||
]) | ||
``` | ||
### api接口信息 | ||
- 任务执行 [POST] /run | ||
``` | ||
{ | ||
"jobId": 1, // 任务 id | ||
"executorHandler": "test", // 当前待执行的任务名称 | ||
"executorParams": "{\"code\": 400, \"msg\": \"123\"}", // 执行时传递的参数 | ||
"executorBlockStrategy": "SERIAL_EXECUTION", | ||
"executorTimeout": 0, // 超时时间 | ||
"logId": 1, // 日志 id | ||
"logDateTime": 1679283887584, // 日志时间戳 | ||
"glueType": "BEAN", // 任务模式 | ||
"glueSource": "", | ||
"glueUpdatetime": 1679283187000, | ||
"broadcastIndex": 0, | ||
"broadcastTotal": 1 | ||
} | ||
``` | ||
- 日志读取 [POST] /log | ||
``` | ||
{ | ||
"logDateTim": 1680925146000, | ||
"logId": 1, | ||
"fromLineNum": 1 | ||
} | ||
``` |
25196
477
83