2013-08-09 2 views
10

Winston을 Socket.io의 로거로 사용하고 싶습니다. 그것이 말하는 어디 this issue을 보았다 :Winston을 통해 Socket.io를 어떻게 기록합니까?

var io = require('socket.io').listen(8080); 
io.set('logger', { debug: <log function>, info: … , error: .., warn: .. }) 

불행하게도, log function가 어떠해야하는지 설명하지 않습니다.

Socket.io logger documentation에서 놀아 보니 고정 된 매개 변수 집합이 없다고 말했습니다. 하나, 둘, 셋 매개 변수가있는 로그 메시지가 있습니다. 아마도 더 많은 것이 있을지 모르겠습니다.

이것은 특히 외부 구성 요소에 대한 인터페이스 인 경우 정의되지 않은 수의 매개 변수를 갖는 것은 바람직하지 않은 방법이라고 생각합니다.

어쨌든 ... 아무도이 경험이 있습니까? 누가 조심해야하는지 지적 해 줄 수 있습니까?

답변

8

이 같은 통화 로거를 설정하여, 보너스로 나

var io = require('socket.io').listen(server, { 
    logger: { 
     debug: winston.debug, 
     info: winston.info, 
     error: winston.error, 
     warn: winston.warn 
    } 
}); 

을 위해 잘 작동하는 것 같다 .listen()으로 Socket.IO의 모든 로그 출력을 잡습니다. 해당 객체 대신 winston을 전달할 수 있어야하지만, 나를 위해 작동하지 않습니다. 그래서이 솔루션을 대신 게시했습니다.

+0

express.io (Express/socket.io 하이브리드)에서 어떻게 똑같이 할 수 있습니까? – silkcom

+0

@silkcom 나는 그것을 전혀 사용하지 못했습니다. – Brad

0

당신은 단순히 로거 객체와 윈스턴 인스턴스에 연결할 수는 :

var winston = require('winston'); 

io.set('logger', winston); 
+0

debug

당신은이 문제에 참조 할 수 있습니다로 전환,하지만 확실히 지금 작업을 얻을 수 없습니다. Socket.IO 또는 Winston에이 기능이 손상되었다고 가정합니다. – Brad