2017-11-10 77 views
1

node.js/express.js 기반 응용 프로그램에서는 winston 로깅 프레임 워크 (버전 2.4.0)가 로깅에 사용됩니다. 그게 잘 작동 정의되지 않은 모든 로그 출력에 추가됩니다. 출력 유형 (문자열, 객체, ..)은 해당 동작을 변경하지 않습니다. 윈스턴은 다음과 같이 몇 가지의 .js 파일에서 사용됩니다Winston logger는 모든 로그 항목에 "undefined"를 추가합니다.

const logger = require('winston') 
.. 
logger.info(`Handled request in ${Date.now() - start}ms.`); 

위의 로그 문에 대한 출력은 다음과 같습니다.

info: Handled request in 667ms.undefined 

로거 때 {정보 | 디버그 | ..이}는 대체됩니다 출력을 콘솔에 기록하는 것은 예상대로입니다. 마지막에 연결되지 않은 '정의되지 않음'으로 기록 할 문장 만

원인은 무엇입니까?

+1

문제를 해결할 수 있었습니까? – Devlige

+1

@devlige : 아니요,하지만 어쩌면 질문을 upvoting 도움이 될 것입니다 :-) –

답변

1

나는 이것에 대한 이유가 확실하지 않고 문제를 파헤 치기위한 시간이별로 없지만 어떤 이유로 든 winston 제작자가 제공 한 예제 코드가 제대로 작동하지 않고 ' undefined '를 반환합니다. 네 사건처럼.

winston 모듈에서 'eol'에 대한 빠른 검색을 수행했으며 콘솔 기능의 console.js에서 모든 옵션과 eol 매개 변수를 인쇄했습니다. 어떻게 든 기본값으로 eol이 지정되지 않았으므로이 '정의되지 않은'부록이 나타났습니다. 실제로 winston.configure()에 사용 된 모든 옵션이 콘솔 기능에 포함되지 않았습니다. 그러나 새로운 콘솔을 명시 적으로 생성하고 옵션을 (eol을 포함하여) 전달하면 꽤 잘 작동합니다.

tl; dr; 나는 당신이 당신의 필요에 맞게 사용자 윈스턴 로깅을 초기화하고 그것을 수정하려면이 코드를 시도 조언 :

const winston = require('winston'); 
winston.configure({ 
    transports: [ 
    new winston.transports.Console({ 
     level: 'silly', 
     eol: '\n', 
     timestamp: true, 
     colorize: true, 
    }) 
    ] 
}); 
winston.silly('testing') 

그것은 다음 진정한 해결책 해결 방법을 더하지만 헤이, 그것은 바로 작동?

편집 : 당신이 창에있는 경우 가 대신 '\r\n' EOL을 시도 할 수도 있습니다.