Skip to content

콘솔

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적

소스 코드: lib/console.js

node:console 모듈은 웹 브라우저에서 제공하는 JavaScript 콘솔 메커니즘과 유사한 간단한 디버깅 콘솔을 제공합니다.

이 모듈은 두 가지 특정 구성 요소를 내보냅니다.

  • console.log() , console.error()console.warn() 과 같은 메서드를 사용하여 모든 Node.js 스트림에 쓸 수 있는 Console 클래스
  • process.stdoutprocess.stderr에 쓰도록 구성된 전역 console 인스턴스. 전역 consolerequire('node:console')을 호출하지 않고도 사용할 수 있습니다.

경고: 전역 콘솔 객체의 메서드는 브라우저 API와 유사하게 일관되게 동기식이 아니며, 다른 모든 Node.js 스트림과 같이 일관되게 비동기식도 아닙니다. 콘솔 함수의 동기/비동기 동작에 의존하려는 프로그램은 먼저 콘솔의 백업 스트림의 특성을 파악해야 합니다. 이는 스트림이 기본 플랫폼과 현재 프로세스의 표준 스트림 구성에 따라 달라지기 때문입니다. 자세한 내용은 프로세스 I/O에 대한 참고 사항을 참조하십시오.

전역 console을 사용하는 예:

js
console.log('hello world')
// 출력: hello world, stdout으로
console.log('hello %s', 'world')
// 출력: hello world, stdout으로
console.error(new Error('Whoops, something bad happened'))
// stderr로 오류 메시지와 스택 추적 출력:
//   Error: Whoops, something bad happened
//     at [eval]:5:15
//     at Script.runInThisContext (node:vm:132:18)
//     at Object.runInThisContext (node:vm:309:38)
//     at node:internal/process/execution:77:19
//     at [eval]-wrapper:6:22
//     at evalScript (node:internal/process/execution:76:60)
//     at node:internal/main/eval_string:23:3

const name = 'Will Robinson'
console.warn(`Danger ${name}! Danger!`)
// 출력: Danger Will Robinson! Danger!, stderr로

Console 클래스를 사용하는 예:

js
const out = getStreamSomehow()
const err = getStreamSomehow()
const myConsole = new console.Console(out, err)

myConsole.log('hello world')
// 출력: hello world, out으로
myConsole.log('hello %s', 'world')
// 출력: hello world, out으로
myConsole.error(new Error('Whoops, something bad happened'))
// 출력: [Error: Whoops, something bad happened], err으로

const name = 'Will Robinson'
myConsole.warn(`Danger ${name}! Danger!`)
// 출력: Danger Will Robinson! Danger!, err으로

클래스: Console

[히스토리]

버전변경 사항
v8.0.0기본적으로 기반 스트림에 쓰는 동안 발생하는 오류는 무시됩니다.

Console 클래스는 구성 가능한 출력 스트림을 사용하여 간단한 로거를 만드는 데 사용할 수 있으며, require('node:console').Console 또는 console.Console(또는 이들의 구조 분해된 대응 항목)을 사용하여 액세스할 수 있습니다.

js
import { Console } from 'node:console'
js
const { Console } = require('node:console')
js
const { Console } = console

new Console(stdout[, stderr][, ignoreErrors])

new Console(options)

[히스토리]

버전변경 사항
v14.2.0, v12.17.0groupIndentation 옵션이 도입되었습니다.
v11.7.0inspectOptions 옵션이 도입되었습니다.
v10.0.0Console 생성자는 이제 options 인수를 지원하며, colorMode 옵션이 도입되었습니다.
v8.0.0ignoreErrors 옵션이 도입되었습니다.
  • options <Object>
    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean> 기본 스트림에 쓸 때 오류를 무시합니다. 기본값: true.
    • colorMode <boolean> | <string>Console 인스턴스에 대한 색상 지원을 설정합니다. true로 설정하면 값을 검사하는 동안 색상이 활성화됩니다. false로 설정하면 값을 검사하는 동안 색상이 비활성화됩니다. 'auto'로 설정하면 색상 지원이 isTTY 속성의 값과 해당 스트림의 getColorDepth()에서 반환된 값에 따라 달라집니다. inspectOptions.colors도 설정되어 있는 경우 이 옵션을 사용할 수 없습니다. 기본값: 'auto'.
    • inspectOptions <Object> util.inspect()에 전달되는 옵션을 지정합니다.
    • groupIndentation <number> 그룹 들여쓰기를 설정합니다. 기본값: 2.

하나 또는 두 개의 쓰기 가능한 스트림 인스턴스를 사용하여 새 Console을 만듭니다. stdout은 로그 또는 정보 출력을 인쇄하는 쓰기 가능한 스트림입니다. stderr는 경고 또는 오류 출력에 사용됩니다. stderr가 제공되지 않으면 stdoutstderr에 사용됩니다.

js
import { createWriteStream } from 'node:fs'
import { Console } from 'node:console'
// 또는
// const { Console } = console;

const output = createWriteStream('./stdout.log')
const errorOutput = createWriteStream('./stderr.log')
// 사용자 지정 간단한 로거
const logger = new Console({ stdout: output, stderr: errorOutput })
// console처럼 사용
const count = 5
logger.log('count: %d', count)
// stdout.log에: count 5
js
const fs = require('node:fs')
const { Console } = require('node:console')
// 또는
// const { Console } = console;

const output = fs.createWriteStream('./stdout.log')
const errorOutput = fs.createWriteStream('./stderr.log')
// 사용자 지정 간단한 로거
const logger = new Console({ stdout: output, stderr: errorOutput })
// console처럼 사용
const count = 5
logger.log('count: %d', count)
// stdout.log에: count 5

전역 console은 출력이 process.stdoutprocess.stderr로 전송되는 특수한 Console입니다. 다음과 같이 호출하는 것과 같습니다.

js
new Console({ stdout: process.stdout, stderr: process.stderr })

console.assert(value[, ...message])

[히스토리]

버전변경 사항
v10.0.0구현이 이제 사양을 준수하며 더 이상 예외를 발생시키지 않습니다.
v0.1.101추가됨: v0.1.101
  • value <any> 참 값으로 테스트되는 값.
  • ...message <any> value를 제외한 모든 인수는 오류 메시지로 사용됩니다.

console.assert()valuefalsy이거나 생략된 경우 메시지를 작성합니다. 메시지만 작성하며 그 외에는 실행에 영향을 주지 않습니다. 출력은 항상 "Assertion failed"로 시작합니다. message가 제공되면 util.format()을 사용하여 형식이 지정됩니다.

valuetruthy이면 아무 일도 발생하지 않습니다.

js
console.assert(true, 'does nothing')

console.assert(false, 'Whoops %s work', "didn't")
// Assertion failed: Whoops didn't work

console.assert()
// Assertion failed

console.clear()

추가됨: v8.3.0

stdout이 TTY인 경우 console.clear()를 호출하면 TTY를 지우려고 시도합니다. stdout이 TTY가 아닌 경우 이 메서드는 아무 작업도 수행하지 않습니다.

console.clear()의 특정 작업은 운영 체제와 터미널 유형에 따라 다를 수 있습니다. 대부분의 Linux 운영 체제에서 console.clear()clear 쉘 명령과 유사하게 작동합니다. Windows에서는 console.clear()가 Node.js 바이너리에 대한 현재 터미널 뷰포트의 출력만 지웁니다.

console.count([label])

추가됨: v8.3.0

  • label <string> 카운터의 표시 레이블. 기본값: 'default'.

label에 특정한 내부 카운터를 유지하고 stdout에 지정된 label을 사용하여 console.count()가 호출된 횟수를 출력합니다.

js
> console.count()
default: 1
undefined
> console.count('default')
default: 2
undefined
> console.count('abc')
abc: 1
undefined
> console.count('xyz')
xyz: 1
undefined
> console.count('abc')
abc: 2
undefined
> console.count()
default: 3
undefined
>

console.countReset([label])

추가됨: v8.3.0

  • label <string> 카운터에 표시될 레이블입니다. 기본값: 'default'.

label에 특정한 내부 카운터를 재설정합니다.

js
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>

console.debug(data[, ...args])

[이력]

버전변경 사항
v8.10.0console.debug는 이제 console.log의 별칭입니다.
v8.0.0추가됨: v8.0.0

console.debug() 함수는 console.log()의 별칭입니다.

console.dir(obj[, options])

추가됨: v0.1.101

  • obj <any>
  • options <Object>
    • showHidden <boolean> true이면 객체의 열거 불가능한 속성과 심볼 속성도 표시됩니다. 기본값: false.
    • depth <number> 객체를 포맷팅하는 동안 util.inspect()가 재귀적으로 호출되는 횟수를 지정합니다. 크고 복잡한 객체를 검사하는 데 유용합니다. 무한히 재귀적으로 호출하려면 null을 전달합니다. 기본값: 2.
    • colors <boolean> true이면 출력이 ANSI 색상 코드로 스타일링됩니다. 색상은 사용자 지정할 수 있습니다. util.inspect() 색상 사용자 지정을 참조하십시오. 기본값: false.

obj에 대해 util.inspect()를 사용하고 결과 문자열을 stdout에 출력합니다. 이 함수는 obj에 정의된 사용자 지정 inspect() 함수를 무시합니다.

console.dirxml(...data)

[히스토리]

버전변경 사항
v9.3.0console.dirxml은 이제 인수에 대해 console.log를 호출합니다.
v8.0.0추가됨: v8.0.0

이 메서드는 수신된 인수를 전달하여 console.log()를 호출합니다. 이 메서드는 XML 형식을 생성하지 않습니다.

console.error([data][, ...args])

추가됨: v0.1.100

줄 바꿈과 함께 stderr에 출력합니다. 여러 개의 인수를 전달할 수 있으며, 첫 번째 인수는 기본 메시지로 사용되고 추가 인수는 모두 printf(3)과 유사한 치환 값으로 사용됩니다(모든 인수는 util.format()에 전달됨).

js
const code = 5
console.error('error #%d', code)
// 출력: error #5, stderr로
console.error('error', code)
// 출력: error 5, stderr로

첫 번째 문자열에서 형식 요소(예: %d)가 발견되지 않으면 각 인수에 대해 util.inspect()가 호출되고 결과 문자열 값이 연결됩니다. 자세한 내용은 util.format()을 참조하십시오.

console.group([...label])

추가됨: v8.5.0

groupIndentation 길이만큼 후속 줄의 들여쓰기를 늘립니다.

하나 이상의 label이 제공되면 추가 들여쓰기 없이 먼저 출력됩니다.

console.groupCollapsed()

추가됨: v8.5.0

console.group()의 별칭입니다.

console.groupEnd()

추가됨: v8.5.0

groupIndentation 길이만큼 후속 줄의 들여쓰기를 줄입니다.

console.info([data][, ...args])

추가됨: v0.1.100

console.info() 함수는 console.log()의 별칭입니다.

console.log([data][, ...args])

추가됨: v0.1.100

줄 바꿈과 함께 stdout에 출력합니다. 여러 인수를 전달할 수 있으며, 첫 번째 인수는 기본 메시지로 사용되고 추가 인수는 모두 printf(3)과 유사한 치환 값으로 사용됩니다(인수는 모두 util.format()에 전달됨).

js
const count = 5
console.log('count: %d', count)
// 출력: count: 5, stdout으로
console.log('count:', count)
// 출력: count: 5, stdout으로

자세한 내용은 util.format()을 참조하십시오.

console.table(tabularData[, properties])

추가됨: v10.0.0

  • tabularData <any>
  • properties <string[]> 테이블을 구성하기 위한 대체 속성.

tabularData의 속성 열(또는 properties 사용)과 tabularData의 행을 사용하여 테이블을 구성하고 로그에 기록하려고 시도합니다. 표 형식으로 파싱할 수 없는 경우 인수를 그대로 로깅합니다.

js
// 표 형식 데이터로 파싱할 수 없습니다.
console.table(Symbol())
// Symbol()

console.table(undefined)
// undefined

console.table([
  { a: 1, b: 'Y' },
  { a: 'Z', b: 2 },
])
// ┌─────────┬─────┬─────┐
// │ (index) │ a   │ b   │
// ├─────────┼─────┼─────┤
// │ 0       │ 1   │ 'Y' │
// │ 1       │ 'Z' │ 2   │
// └─────────┴─────┴─────┘

console.table(
  [
    { a: 1, b: 'Y' },
    { a: 'Z', b: 2 },
  ],
  ['a']
)
// ┌─────────┬─────┐
// │ (index) │ a   │
// ├─────────┼─────┤
// │ 0       │ 1   │
// │ 1       │ 'Z' │
// └─────────┴─────┘

console.time([label])

추가됨: v0.1.104

작업의 지속 시간을 계산하는 데 사용할 수 있는 타이머를 시작합니다. 타이머는 고유한 label로 식별됩니다. console.timeEnd()를 호출하여 타이머를 중지하고 적절한 시간 단위로 경과 시간을 stdout에 출력하려면 동일한 label을 사용하십시오. 예를 들어, 경과 시간이 3869ms인 경우 console.timeEnd()는 "3.869s"를 표시합니다.

console.timeEnd([label])

[히스토리]

버전변경 사항
v13.0.0경과 시간이 적절한 시간 단위로 표시됩니다.
v6.0.0이 메서드는 개별 console.time() 호출에 매핑되지 않는 여러 호출을 더 이상 지원하지 않습니다. 자세한 내용은 아래를 참조하십시오.
v0.1.104추가됨: v0.1.104

console.time()을 호출하여 이전에 시작된 타이머를 중지하고 결과를 stdout에 출력합니다.

js
console.time('bunch-of-stuff')
// 여러 작업을 수행합니다.
console.timeEnd('bunch-of-stuff')
// 출력: bunch-of-stuff: 225.438ms

console.timeLog([label][, ...data])

추가됨: v10.7.0

console.time()을 호출하여 이전에 시작된 타이머의 경우 경과 시간과 다른 data 인수를 stdout에 출력합니다.

js
console.time('process')
const value = expensiveProcess1() // 42를 반환합니다.
console.timeLog('process', value)
// "process: 365.227ms 42"를 출력합니다.
doExpensiveProcess2(value)
console.timeEnd('process')

console.trace([message][, ...args])

추가됨: v0.1.104

stderr에 문자열 'Trace: 'util.format()으로 형식이 지정된 메시지 및 코드의 현재 위치에 대한 스택 추적을 출력합니다.

js
console.trace('Show me')
// 출력: (스택 추적은 trace가 호출된 위치에 따라 다릅니다.)
//  Trace: Show me
//    at repl:2:9
//    at REPLServer.defaultEval (repl.js:248:27)
//    at bound (domain.js:287:14)
//    at REPLServer.runBound [as eval] (domain.js:300:12)
//    at REPLServer.<anonymous> (repl.js:412:12)
//    at emitOne (events.js:82:20)
//    at REPLServer.emit (events.js:169:7)
//    at REPLServer.Interface._onLine (readline.js:210:10)
//    at REPLServer.Interface._line (readline.js:549:8)
//    at REPLServer.Interface._ttyWrite (readline.js:826:14)

console.warn([data][, ...args])

추가됨: v0.1.100

console.warn() 함수는 console.error()의 별칭입니다.

Inspector 전용 메서드

다음 메서드는 일반 API에서 V8 엔진에 의해 노출되지만, inspector (--inspect 플래그)와 함께 사용하지 않는 한 아무것도 표시하지 않습니다.

console.profile([label])

추가됨: v8.0.0

이 메서드는 inspector에서 사용하지 않는 한 아무것도 표시하지 않습니다. console.profile() 메서드는 console.profileEnd()가 호출될 때까지 선택적 레이블이 있는 JavaScript CPU 프로파일을 시작합니다. 그런 다음 프로파일이 inspector의 프로파일 패널에 추가됩니다.

js
console.profile('MyLabel')
// 일부 코드
console.profileEnd('MyLabel')
// inspector의 프로파일 패널에 'MyLabel' 프로파일을 추가합니다.

console.profileEnd([label])

추가됨: v8.0.0

이 메서드는 inspector에서 사용하지 않는 한 아무것도 표시하지 않습니다. 시작된 경우 현재 JavaScript CPU 프로파일링 세션을 중지하고 inspector의 프로파일 패널에 보고서를 출력합니다. 예시는 console.profile()을 참조하십시오.

레이블 없이 이 메서드를 호출하면 가장 최근에 시작된 프로파일이 중지됩니다.

console.timeStamp([label])

추가됨: v8.0.0

이 메서드는 inspector에서 사용하지 않는 한 아무것도 표시하지 않습니다. console.timeStamp() 메서드는 레이블 'label'이 있는 이벤트를 inspector의 타임라인 패널에 추가합니다.