如何获取BullMQ中任务的具体日志内容
如何获取BullMQ中任务的具体日志内容
我之前也踩过这个坑!你用job.log("SOME LOG")记录日志后,默认只显示日志计数是因为还没调用专门的方法拉取具体内容,下面给你说具体操作:
首先,要拿到任务的具体日志,得用
job.getLogs()这个异步方法,它会返回包含所有日志内容的数组。举个实际使用的例子:// 假设你已经通过队列获取到了目标job实例 async function getJobLogs(job) { const logs = await job.getLogs(); console.log("任务的具体日志:", logs); // 这里就能看到你之前用job.log()记录的每一条内容了 }如果是通过任务ID查询,流程是先通过队列拿到任务实例,再调用日志方法:
const Queue = require('bullmq'); // 初始化你的队列 const myQueue = new Queue('你的队列名称'); async function fetchLogsByJobId(jobId) { const job = await myQueue.getJob(jobId); if (job) { const logs = await job.getLogs(); console.log(`任务${jobId}的日志:`, logs); } else { console.log("找不到对应的任务,请检查任务ID是否正确"); } }还有个小提醒:如果任务完成或失败后被自动删除,日志也会跟着丢失。所以要确保队列的默认任务配置里,没有开启自动删除已完成/失败任务的选项(或者调整保留时间),比如:
const myQueue = new Queue('你的队列名称', { defaultJobOptions: { removeOnComplete: false, // 设为false保留已完成任务,也可以设为数字表示保留多少毫秒 removeOnFail: false // 同理,保留失败任务 } });
备注:内容来源于stack exchange,提问作者Junaid Anwar
相关产品推荐
相关产品推荐

