2011-10-01 3 views
7

socket.io은 모든 내부 용으로 기본적으로 합리적인 로깅 시스템을 갖고있는 것으로 보입니다. 적절한 로깅 메시지를 생성 할 수 있도록 로깅 객체를 직접 가져 오는 방법은 무엇입니까? 그것은 내 console.log() 메시지가 socket.io 메시지 옆에 타임 스탬프가 적용되지 않았고 수준이 맞지 않으며 추악하다는 것을 알려주며 버그가 난다. 나는 코드 socket.io에서 많은 spelunking을 해왔으며, 코드에서 원하는 객체를 얻는 방법을 알기 위해 객체 계층 구조가 어떤 모양인지 이해하기 위해이 시점에서 노드에 대해 충분히 잘 알고 있지 않습니다.내 메시지를 생성하기 위해 socket.io의 내장 로깅 시스템에 어떻게 연결합니까?

필자는 오랫동안보다 강력한 로깅 시스템 모듈 (파일 로깅, 자동 회전, 모듈 단위로 수준 관리, 사용자 정의 로그 수준 등) 기능을 원할 것입니다. Winston은 합리적인 것처럼 보이지만 socket.io도 사용할 수 있습니까? 모든 것을 한 곳에 모으는 것이 좋을 것입니다.

답변

8

동안, 내가 지금처럼 기존의 로거 모듈에 연결 할 수 있었다

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

Connect의 로거 미들웨어를 사용해 보셨습니까? 누군가가 이미 원하는 라이브러리를 만들었습니다. socket.IO-connect. 내 Express 프로그램에서 비슷한 것을 사용

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도 매우 간단하다 : socket.io를 사용

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