2011-12-14 41 views
2

我一直在使用Node.js和Azure玩弄。我創建了一個支持套接字連接的簡單工作者角色。我試圖調試我的應用程序,但不知道如何,因爲它本質上是一個套接字服務器。更糟的是,我還沒有想出一種方法來編寫控制檯或在這個工作角色中記錄數據。我希望有人已經找到了一個在Azure中調試Node.js的好方法。感謝您的高級幫助。使用Azure調試Node.js

+0

日誌記錄聽起來像一個hook.io服務器的完美任務。當你想讀取日誌消息時,你啓動一個hook.io服務器並附加/分離一個日誌鉤子。 – Raynos 2011-12-15 00:17:18

回答

0

如果您正在模擬器中運行,您可以在模擬器GUI中看到您的日誌(右鍵單擊模擬器圖標)。如果您在Azure中運行,最好的辦法是登錄到BLOB存儲。您還可以啓用遠程桌面以遠程訪問Windows Azure VM。

+0

太棒了。這應該有助於調試過程。 – grouma 2011-12-15 03:40:22

0

當我最初在Nodejs下作爲套接字服務器開發時,我直接運行並從WebStorm調試node.exe,因此只需console.log()或util.inspect()就可以接受並查看活動發生在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:或F:\爲approot \登錄到部署的服務器\ socket.log文件。

然後使用一個像baretail這樣的拖尾程序來觀察實時活動並記錄下來。