2016-09-15 5 views
0

여러 프로세스가 동시에 stdout에 쓰는 경우 스트림을 인터리브하지 못하도록 할 수 없습니다. 이것은 내가 충돌로 말한 것입니다. enter image description here node source의 의견에 따르면 process.stdout에서 충돌을 피할 수 있어야합니다. 나는 이것을 시도했지만 도움이되지만 여전히 충돌을 얻는다. writing 플래그가 없으면 매번 충돌이 발생하고 깃발은 약 40 %로 떨어집니다. 여전히 매우 중요합니다.노드에서 stdout 충돌이 발생했습니다.

process.stdout에서 충돌을 피하는 가장 좋은 방법은 무엇입니까?

위의 루틴은 stdout에 대해 Winston과 경쟁하고 있습니다. PowerShell에서 또는 cmd를에서 노드를 실행할 때

노드 v5.12.0는 윈도우 webstorm에서 실행 콘솔을 사용하는 경우이 문제는 발생 10

는, 출력은 혼합되지 않습니다. 나는 제트기에서 이것을 위해 ticket을 올렸다.

+0

충돌이 무엇인지 정의 할 수 있습니까? – robertklep

+0

@robertklep, [Fly] (https://en.wikipedia.org/wiki/The_Fly_ (1958_film))을 보았습니까? –

+0

하하 나는 아이디어를 얻었습니다. D 그래서 당신은 서로 다른 로그 라인 사이에서 문자 인터리빙을하고 있습니까? 또는 하나의 로거로 여러 라인을 기록하고 다른 로거에 의해 인터리브되는 라인 인터리빙? – robertklep

답변

1

동일한 스트림에 여러 개의 작성자 이있는 경우 인터리브 할 생각이 없습니다. 단일 라이터가 연속해서 여러 행을 로깅하는 경우에도 해당 행은 올바른 순서로 버퍼링되며 다른 행인이 행을 기록하면 이전에 버퍼에 추가됩니다 기록 된 라인. 다른 스트림에 쓰는 작가가있을 때stdout에 쓰기와 stderr에 다른 같은 발생할 수 있습니다 을 인터리브

. 어느 시점에서 한 스트림의 출력 버퍼가 가득 차면 콘솔에 쓰고있는 다른 스트림과 관계없이 콘솔로 플러시됩니다.