프로그래밍/Node.js

[nodejs] VSCode 디버그 콘솔에 winston 로그가 출력되지 않는 문제

채윤아빠 2022. 8. 4. 10:38
728x90
반응형

문제점 및 증상

NodeJs에서 "Winston" 모듈을 설치하여 "transports.Console()"을 이용하여, 콘솔로 로그를 출력하는데 터미널에서 직접 소스를 실행하면 로그가 잘 표시되나, VSCode에서 실행하면 디버그 콘솔에 다음과 같이 아무런 메시지가 표시되지 않았습니다.

구현한 소스는 다음과 같습니다.

const { createLogger, transports } = require("winston");

const consoleTransport = new transports.Console();

const logger = createLogger({
    level: 'debug',
    transports: [consoleTransport]
    , stderrLevels: ['error', 'debug']
});

logger.info('This is an info log message.');
logger.warn('This is a warning log message.');
logger.error('This is an error log message.');

console.log(logger.silent)

다음은 터미널에서 직접 실행한 결과입니다.

> node .\demo\logger_demo3.js
{"level":"info","message":"This is an info log message."}
{"level":"warn","message":"This is a warning log message."}
{"level":"error","message":"This is an error log message."}
undefined

다음은 VSCode에서 직접 실행한 결과입니다.

C:\Dev\nodejs\node.exe .\demo\logger_demo3.js
undefined


해결 방법

해결 방법은 의외로 간단하였습니다.

VSCode의 "launch.json" 파일을 열어서 다음 설정을 추가하면 됩니다. "'outputCapture': 'std'"

위와 같이 "launch.json" 파일을 설정한 뒤에 실행하면, 직접 터미널에서 실행한 것과 동일한 결과를 얻을 수 있습니다.

C:\Dev\nodejs\node.exe .\demo\logger_demo3.js
Debugger attached.
{"level":"info","message":"This is an info log message."}
{"level":"warn","message":"This is a warning log message."}
{"level":"error","message":"This is an error log message."}
undefined
Waiting for the debugger to disconnect...


참고자료