2011-12-14 4 views
2

나는 Node.js와 Azure로 장난하고있다. 소켓 연결을 지원하는 간단한 작업자 역할을 만들었습니다. 내 응용 프로그램을 디버깅하려하지만 실제로 소켓 서버이기 때문에 실제로는 모릅니다. 설상가상으로 저는이 작업자 역할 내에서 콘솔에 기록하거나 데이터를 기록하는 방법을 찾지 못했습니다. 누군가 Azure에서 Node.js를 디버깅하는 좋은 방법을 찾아 냈 으면합니다. 고급 도움말에 감사드립니다.Azure로 Node.js 디버그

+0

로깅은 hook.io 서버의 완벽한 작업처럼 들립니다. 로깅 메시지를 읽으 려 할 때 hook.io 서버를 시작하고 로깅 후크를 연결/분리합니다. – Raynos

답변

0

에뮬레이터에서 실행 중이면 에뮬레이터 GUI에서 로그를 볼 수 있습니다 (에뮬레이터 아이콘을 마우스 오른쪽 단추로 클릭). Azure에서 실행중인 경우 가장 좋은 방법은 BLOB 저장소에 기록하는 것입니다. 또한 원격 데스크톱을 사용하여 Windows Azure VM에 원격으로 액세스 할 수 있습니다.

+0

굉장합니다. 이것은 디버깅 프로세스에 도움이됩니다. – grouma

+0

일단 VM에 액세스하면 "console/cmd/powershell"노드를 어떻게 볼 수 있습니까? 프로세스에서 실행중인 노드를 볼 수는 있지만 열린 창은 없습니다. – Blowsie

0

처음 소켓 서버로 Nodejs에서 개발할 때 console.log() 또는 util.inspect()를 사용하여 WebStorm에서 직접 node.exe를 디버깅하여 실행 중이 었습니다. WebStorm의 콘솔 창.

당연히 우리는 Windows Azure에 배포 할 때 도움이되지 않았으므로 원격 데스크톱이 실행되는 경우에도 서버에서 실행 된 node.exe 프로세스의 런타임 콘솔 창을 볼 방법이없는 것으로 나타났습니다. 두 개의 로깅 라이브러리에서 실제로 파일에 저장할 수있는 유일한 라이브러리는 log4js입니다.

나머지 응용 프로그램에 노출되는 로거 개체가 있으므로 실제 구현 라이브러리에 대해 알 필요가 없습니다.

var log4js = require('log4js'); 

// The logger helper utilises log4js under the covers. 
// Serves as a wrapper from the rest of the application. 
log4js.replaceConsole(); 
log4js.configure({ 
    appenders: [ 
     { type: 'console' }, 
     { type: 'file', filename: 'log/socket.log', category: 'socket' } 
    ] 
}); 
var logger = log4js.getLogger('socket'); 

이렇게 정보는 배포 된 서버의 E : 또는 approot \ log \ socket.log 파일에 기록됩니다.

그런 다음 baretail과 같은 테일링 프로그램을 사용하여 기록 된 실시간 활동을 관찰하십시오.

관련 문제