2012-10-04 1 views
3

아래 코드는 모든 요청을 JSON 형식의 두 파일에 기록합니다. 이것은 각 요청을 콘솔에 두 번 기록하는 부작용이 있습니다. 왜 그런가요? Winston을 잘못 사용하고 있다고 확신합니다. 어떤 의견이라도 감사하겠습니다.nodejs/winston logging - 여러 개의 로그 파일이 필요합니다. 하나는 POST 만 있고 다른 하나는 GET (내부 세부 정보)입니다.

var winston = require('winston'); 


winston.loggers.add('main_nojson', { 
    file: { 
     filename: '/home/stu/logs/winston_txt.log', 
     json: false 
    } 
}); 

winston.loggers.add('main_json', { 
    file: { 
     filename: '/home/stu/logs/winston_json.log', 
     json: true 
    } 
}); 

var winlog1 = winston.loggers.get('main_nojson'); 
var winlog2 = winston.loggers.get('main_json'); 

var winstonStream = { 
    write: function(message, encoding){ 
     winlog1.info(message); 
     winlog2.info(message); 
    } 
}; 

app.use(express.logger({stream:winstonStream, format: ':remote-addr - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" :response-time' })); 

답변

2

이 시도 :

winston.loggers.add('main_json', { 
    console: { 
     silent: true 
    }, 
    file: { 
    filename: '/home/stu/logs/winston_json.log', 
     json: true 
    } 
}); 

모두 consolefile 출력을 억제하는 silent 옵션을 전송; 당신의 로거 중 하나 또는 두 가지 모두에 추가함으로써 콘솔 출력을 억제하지만 파일 출력을 유지할 수 있습니다. 다른 곳 구글에서 또는에서이 오래된 질문 우연히 발견 할 수있는 사람들을위한

3

은 :

다른 방법은 당신이 그 (것)들을 추가하는 방법과 유사한 방식으로 콘솔 전송을 제거하는 것입니다 :

파일 전송을 추가하려면 :

winston.add(winston.transports.File, { filename: 'logs/log.log' }); 

하여 콘솔 출력 억제, 콘솔 수송을 제거하기 위해 유사하게, 영업 이익의 질문에 대답하기 :

winston.remove(winston.transports.Console); 
+0

감사 ...이 옵션을 사용하면 새로운 전송 옵션을 추가 할 수있었습니다. –

관련 문제