De-tangling记录Node JS中运行的任务

时间:2015-11-22 20:47:11

标签: node.js logging asynchronous

保存新行将启动2个异步作业。我试图调试其中一个后台作业,因为它们运行一些共享的模型代码。问题是,如果我添加日志记录来调试任何共享代码,突然它就会纠结,看起来像:

15:36:42 worker.1 | Running SQL "select count() .."  (job #1)
15:36:42 worker.1 | Running SQL "select * .."        (job #2)
15:36:42 worker.1 | Got to part 2 of the code        (job #1)
15:36:42 worker.1 | Got to part 3 of the code        (job #1)
15:36:42 worker.1 | Got to part 2 of the code        (job #2)
15:36:42 worker.1 | Got to part 3 of the code        (job #2)
15:36:42 worker.1 | Got to part 4 of the code        (job #1)
15:36:42 worker.1 | Job failed                       (job #2)
15:36:42 worker.1 | Job complete                     (job #1)

除了工作#2"标签在现实中是不可能的。我刚刚添加了这些来说明这种混乱。

我想过滤掉因job #2

而不会发生的所有日志行

这两个职位共享process.pid - "应该"它们是独立的过程吗?

1 个答案:

答案 0 :(得分:1)

是否可以隔离作业2并独立于job1运行它(或者可能只是提供系统创建作业所需的任何输入,以产生您想要调试的结果。)

如果没有,你可以给你标记async jobs。如果您可以为每个作业分配一个唯一的ID,该ID在链的早期初始化并传递到整个链中,那么您可以根据该ID grep您的日志。

在实际中标记代码肯定是可能的,它可能需要重构或重构代码。

另一个选择是将工作池卸载到工作池,这会将每个作业与工作者隔离,但可能没有必要,这肯定会增加程序的复杂性。