로깅
개요
이 가이드 에서는 Node.js 운전자 에서 로거를 구성하는 방법을 학습 수 있습니다. 운전자 사용하면 다음과 같은 심각도 수준으로 분류된 정보를 로그 할 수 있습니다.
emergency
alert
critical
error
warn
notice
info
debug
trace
off
앞의 목록은 심각도 수준이 내림차순으로 정렬됩니다. 심각도 수준을 지정하면 심각도 수준이 더 높은 모든 메시지도 기록됩니다. 예시 를 들어 로그 수준을 critical
로 설정하면 심각도 수준이 emergency
및 alert
인 로그 메시지도 생성됩니다.
지정하는 심각도 수준이 낮을수록 운전자 더 많은 정보를 기록하므로 애플리케이션 성능에 영향 수 있습니다.
구성
환경 변수를 지정하여 코드 변경 없이 Node.js 운전자 에서 로깅을 구성할 수 있습니다. MongoClient
생성자에 클라이언트 옵션을 지정하여 프로그래밍 방식으로 로깅을 구성할 수도 있습니다.
참고
연결 문자열은 로깅 지원 다를 수 있는 서로 다른 애플리케이션의 배포서버 간에 공유되는 경우가 많으므로 연결 문자열 사용하여 로깅을 구성하지 않는 것이 좋습니다.
환경 변수
다음 환경 변수 중 하나 이상에서 심각도 수준을 지정하여 운전자 의 다양한 구성 요소에 대한 로깅을 구성할 수 있습니다.
MONGODB_LOG_ALL
: 설정되지 않은 모든 구성 요소에 대한 기본값 심각도를 지정합니다.MONGODB_LOG_COMMAND
: 서버 로 전송된 모든 명령을 기록합니다.MONGODB_LOG_TOPOLOGY
: 클러스터 토폴로지 에 대한 모든 변경 사항을 기록합니다.MONGODB_LOG_SERVER_SELECTION
: 서버 선택 프로세스 기록합니다.MONGODB_LOG_CONNECTION
: 모든 연결 풀 이벤트를 기록합니다.MONGODB_LOG_CLIENT
: 모든 클라이언트 이벤트를 기록합니다.
앞의 환경 변수를 지정하지 않으면 운전자 MONGODB_LOG_ALL
값을 사용하며, 이 값은 지정하지 않으면 암시적으로 off
로 설정하다 됩니다.
팁
명령 수준에서의 로깅은 명령이 서버 로 전송되는 빈도로 인해 성능이 가장 많이 요구되는 로깅 옵션입니다. 애플리케이션 디버깅에 필요한 경우에만 이 옵션을 지정합니다.
다음 예시 MONGODB_LOG_COMMAND
를 제외한 모든 구성 요소의 로그 수준을 debug
로 설정합니다.
export MONGODB_LOG_ALL="debug" export MONGODB_LOG_COMMAND="off"
로그 위치
다음 예시 와 같이 MONGODB_LOG_PATH
환경 변수를 "stderr"
또는 "stdout"
로 설정하여 운전자 stderr
또는 stdout
에 로그할지 여부를 지정할 수 있습니다.
export MONGODB_LOG_PATH="stderr"
기본값 으로 운전자 stderr
에 로그합니다.
문서 길이
운전자 기본값 으로 문자열을 1000 자로 제한하는 EJSON을 사용하여 기록된 문서를 문자열화합니다. MONGODB_LOG_MAX_DOCUMENT
환경 변수를 지정하여 로거의 최대 문서 길이를 지정할 수 있습니다. 잘림을 수행하지 않으려면 이 변수를 0
로 설정합니다.
다음 예시 최대 문서 길이를 500 자로 설정합니다.
export MONGODB_LOG_MAX_DOCUMENT_LENGTH=500
클라이언트 옵션
MongoClient
생성자에 클라이언트 옵션을 지정하여 프로그래밍 방식으로 로깅을 구성할 수 있습니다. 클라이언트 옵션은 환경 변수보다 우선하므로 운전자 환경 변수에 응답하지 않도록 하려는 경우에만 클라이언트 에서 옵션을 지정하세요.
팁
애플리케이션 이 stdout
또는 stderr
형식을 사용하는 경우 애플리케이션 사용자의 환경 변수와의 충돌을 방지하기 위해 클라이언트 옵션을 사용하여 로깅을 구성하는 것이 좋습니다.
다음 클라이언트 옵션 중 하나 이상을 지정하여 로깅을 구성할 구성 요소를 지정할 수 있습니다.
default
: 설정되지 않은 모든 구성 요소에 대한 기본값 심각도를 지정합니다.command
: 서버 로 전송된 모든 명령을 기록합니다.topology
: 클러스터 토폴로지 에 대한 모든 변경 사항을 기록합니다.serverSelection
: 서버 선택 프로세스 기록합니다.connection
: 모든 연결 풀 이벤트를 기록합니다.client
: 모든 클라이언트 이벤트를 기록합니다.
구성 요소에 대한 로그 수준을 지정하려면 mongodbLogComponentSeverities
옵션을 구성 요소와 원하는 심각도 수준이 포함된 객체 로 설정하다 . 다음 예시 command
를 제외한 모든 구성 요소의 로그 수준을 debug
로 설정합니다.
const client = new MongoClient("<connection string>", { mongodbLogComponentSeverities: { default: "debug", command: "off" } });
로그 위치
다음 예시 와 같이 mongodbLogPath
옵션을 "stderr"
또는 "stdout"
로 설정하여 운전자 stderr
또는 stdout
에 로깅할지 여부를 지정할 수 있습니다.
const mongodbLogComponentSeverities = { default: "debug" }; const mongodbLogPath = "stdout"; const client = new MongoClient("<connection string>", { mongodbLogComponentSeverities, mongodbLogPath } );
기본값 으로 운전자 stderr
에 로그합니다.
사용자 지정 로그 대상을 지정할 수도 있습니다. 다음 예시 사용자 지정 로그 대상을 생성합니다.
import fs from 'node:fs/promises'; import util from 'node:util'; const mongodbLogPath = { file: await fs.open(`./server-${+new Date()}.logs`, 'w'), async write(log) { try { await this.file?.appendFile(util.inspect(log) + '\n'); } catch (fileError) { console.log('cannot log anymore', fileError); this.file = null; } } } const client = new MongoClient("<connection string>", { mongodbLogPath });
함수가 쓰기 (write) 작업에서 오류를 발생시키면 발생한 오류로 인해 로거가 종료됩니다. 따라서 이전 예시 와 같이 오류를 발생시키는 대신 쓰기 (write) 함수를 no-op으로 설정하여 오류를 처리하다 것이 좋습니다.
참고
적절한 로그 순환 시스템이 마련되지 않은 경우 로깅으로 인해 디스크 공간이 고갈될 수 있습니다. 사용자 지정 쓰기 (write) 함수를 널리 사용되는 로깅 라이브러리에 연결하는 것이 좋습니다.
문서 길이
운전자 기본값 으로 문자열을 1000 자로 제한하는 EJSON을 사용하여 기록된 문서를 문자열화합니다. mongodbLogMaxDocumentLength
옵션을 지정하여 로거의 최대 문서 길이를 지정할 수 있습니다. 잘라내기를 수행하지 않으려면 이 옵션을 0
로 설정합니다.
다음 예시 최대 문서 길이를 500 자로 설정합니다.
const mongodbLogComponentSeverities = { default: "debug" }; const mongodbLogLength = 500; const client = new MongoClient("<connection string>", { mongodbLogComponentSeverities, mongodbLogLength });
추가 정보
Node.js 운전자 사용한 모니터링 에 대한 자세한 내용은 다음 모니터링 가이드를 참조하세요.
API 문서
이 가이드 에 설명된 옵션 또는 유형에 대해 자세히 학습 다음 API 문서를 참조하세요.