2011-12-14 78 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这样的拖尾程序来观察实时活动并记录下来。