2011-10-01 77 views
7

socket.io似乎有一個基本合理的日誌記錄系統的所有內部。我如何自己獲取該日誌記錄對象,以便可以在適當的級別生成我自己的日誌消息?它讓我感到疑惑,即我的console.log()消息在socket.io消息旁邊沒有被加時間戳,不加水平和醜陋。我已經在socket.io代碼中做了一堆探索,並且我現在對節點的瞭解還不夠,無法理解對象層次結構是如何知道如何從我的代碼中獲取所需對象的。長期來看,我可能會想要一個更強大的日誌系統模塊(能夠記錄文件,自動旋轉,基於每個模塊管理級別,自定義日誌級別等)。 Winston看起來很合理,但是我也可以使用socket.io來使用它嗎?將所有東西都放在一個地方很好。如何插入socket.io的內置日誌記錄系統來生成我自己的消息?

回答

8

在使用socket.io,我是能夠插入到現有的記錄器模塊,像這樣:

var express = require('express'), 
    app  = module.exports = express.createServer(), //just creating 'app' for io 
    io  = require('socket.io').listen(app), 
    logger = io.log, // access the existing logger setup in socket.io 
    util = require('util'); 

logger.info(util.format("Express server listening on port %d in %s mode", 8003, app.settings.env)); 

Configuring the logger也很簡單:

io.configure('production', function(){ 
    io.set('log level', 1); 
} 
3

您是否使用Connect的記錄器中間件進行了研究?看起來有人已經爲您想要的socket.IO-connect創建了一個庫。我使用類似的東西在我Express程序:

var connect = require('connect'); 

module.exports = connect.createServer(
    connect.logger({ format: ':response-time :method :url' }), 
    connect.static(__dirname + '/public) 
); 
+0

這是有希望的!我將在明天仔細研究它,看看它是否強制socket-io通過連接中間件路由它的日誌消息。我的回退策略是將套接字日誌設置爲0,並與Winston一起完成我自己的日誌記錄。我會失去一些低級別的訪問權限,但是如果我在套接字級別遇到問題,我會遇到更大的問題,無論如何都需要進行更加精細的調試。 – drewww

相關問題