Node.js 在节点JS中运行的任务的解纠缠日志
保存新行将启动2个异步作业。我试图调试一个后台作业,因为它们运行在一些共享模型代码中。问题是,如果我添加日志来调试任何共享代码,它会突然变得混乱,看起来像:Node.js 在节点JS中运行的任务的解纠缠日志,node.js,logging,asynchronous,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
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
这两个作业共享相同的
进程。pid
-“它们是否应该是单独的进程?”是否可以隔离作业2并独立于作业1运行它(或者只提供系统所需的任何输入,以创建产生要调试的结果的作业。)
如果没有,您能否标记您的异步作业
。如果您可以给每个作业一个唯一的id,该id在链的早期初始化并在整个链中传递,那么您可以基于该id对日志进行grep
在现实中,给代码添加标签肯定是可能的,它可能只需要对代码进行重新构造或重构
另一种选择是拥有一个工作人员池,您可以将作业卸载到该工作人员池中,这会将每个作业隔离给一个工作人员,但可能不是必需的,并且肯定会增加程序的复杂性。隔离作业是可能的。我想在这个例子中,我想看看并行运行是否有副作用。我真的很喜欢一开始就为这份工作编一个UUID,让它成为州政府的一部分,这是通过承诺传递的。谢谢