AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

로깅

이 가이드에서는 MongoDB Scala 드라이버에서 로거(logger)를 설정하고 구성하는 방법에 대해 알아보겠습니다.

이 가이드는 드라이버에서 이벤트를 기록하는 방법을 보여줍니다. 코드에서 드라이버 활동에 대한 정보를 사용하는 방법을 알아보려면 모니터링 가이드를 참고하세요.

이 섹션에서는 로거 설정에 필요한 종속성에 대해 설명하고 로거 설정 예시를 제공합니다.

MongoDB Scala 드라이버는 SLF4J(Simple Logging Facade For Java)를 사용합니다. SLF4J를 사용할 때 배포 시점에 로그 프레임워크를 지정할 수 있습니다. Scala 드라이버에서는 로거 설정이 선택 사항입니다.

애플리케이션을 시작하면 MongoDB Scala 드라이버는 클래스 경로에서 slf4j-api 아티팩트를 찾습니다. 드라이버가 slf4j-api 아티팩트를 찾을 수 없는 경우 다음 경고를 로그하고 모든 추가 로그를 비활성화합니다:

WARNING: SLF4J not found on the classpath. Logging is disabled for the 'org.mongodb.driver' component

로거를 설정하려면 프로젝트에 다음 요소를 포함해야 합니다.

  • slf4j-api 아티팩트

  • 로깅 프레임워크

  • slf4j-api 아티팩트를 로깅 프레임워크에 연결하는 바인딩

다음 예시에서는 slf4j-api 아티팩트를 선택한 로깅 프레임워크에 바인딩하는 방법을 보여줍니다.

Logback 또는 Log4j2 탭을 선택하여 선택한 로그 프레임워크를 설정하고 해당 코드 예시를 확인합니다.

Logback을 사용하려면 프로젝트의 build.sbt 파일에 다음 줄을 추가합니다. 이 줄에는 slf4j-api 아티팩트, 로그 프레임워크 및 바인딩이 포함되어 있습니다.

libraryDependencies += "org.slf4j" % "slf4j-api" % "2.0.13"
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.5.6"

Logback 설정을 테스트하려면 프로젝트의 Main.scala 파일에 다음 코드를 추가합니다. 이 코드는 MongoDB 배포서버에 연결하여 문서를 조회합니다. 코드를 추가한 후 IDE 대신 sbt run을 사용하여 터미널에서 애플리케이션을 실행합니다.

val mongoClient = MongoClient("<connection string>")
val database: MongoDatabase = mongoClient.getDatabase("<database>")
val collection: MongoCollection[Document] = database.getCollection("<collection>")
collection.find().first().printHeadResult()

참고

기본값 로그 수준

Logback의 기본 로그 수준은 DEBUG입니다. DEBUG 수준은 연결 열기 및 드라이버가 MongoDB에 전송하고 수신하는 명령과 같이 문제 해결을 위한 자세한 진단 메시지를 기록합니다. Logback 로거의 로그 수준을 변경하는 방법을 알아보려면 이 페이지의 로거 구성 섹션의 예시를 참조하세요.

Logback에 대한 자세한 내용은 Logback 매뉴얼을 참조하세요.

Log4j2를 사용하려면 프로젝트의 build.sbt 파일에 다음 항목을 추가합니다. 이 항목에는 slf4j-api 아티팩트, 로그 프레임워크 및 바인딩이 포함됩니다.

libraryDependencies += "org.slf4j" % "slf4j-api" % "2.0.13"
libraryDependencies += "org.apache.logging.log4j" % "log4j-slf4j2-impl" % "2.24.3"
libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % "2.24.3"

Log4j2 설정을 테스트하려면 프로젝트의 Main.scala 파일에 다음 코드를 추가합니다. 코드는 오류 메시지를 로그합니다. 코드를 추가한 후 IDE 대신 터미널에서 sbt run을(를) 사용하여 애플리케이션을 실행합니다.

import org.slf4j.Logger
import org.slf4j.LoggerFactory
val logger: Logger = LoggerFactory.getLogger("MyApp")
logger.error("Logging an Error")

참고

기본값 로그 수준

로그4j2의 기본 로그 수준은 ERROR입니다. 이는 MongoDB Scala 드라이버에서 표준 작업을 실행하면 로그 수준 구성 없이는 로그4j2에서 출력이 생성되지 않은다는 의미입니다. 로그4j2 로거의 로그 수준을 변경하는 방법을 알아보려면 이 페이지의 로거 구성 섹션의 예시를 참조하세요.

Log4j2에 대한 자세한 내용은 Log4j2 매뉴얼을참조하세요.

SLF4J에 대한 자세한 내용은 SLF4J 문서를 참조하세요.

로그어를 구성하려면 SLF4J에 바인딩된 로그 프레임워크의 구성 시스템을 사용해야 합니다.

로그 수준은 로거가 메시지를 출력하기 위해 메시지의 긴급성 정도를 지정합니다. 다음 예시는 각 로깅 프레임워크의 구성 시스템을 사용하여 로그 수준을 INFO로 설정하는 방법을 보여줍니다. Logback 또는 Log4j2 탭을 선택하여 각 접근 방식에 해당하는 코드를 확인합니다.

Logback은 클래스패스에서 logback.xml 이라는 이름의 파일에서 구성을 읽습니다. 이 파일은 기본적으로 존재하지 않으므로 생성해야 합니다. Scala 프로젝트의 어디든 logback.xml을 넣을 수 있습니다. 클래스패스에서 접근할 수 있는 한

Logback 프레임워크는 가장 긴급한 것부터 가장 덜 긴급한 것까지 순서대로 다음 로그 수준을 정의합니다.

  • 오류

  • 경고

  • 정보

  • DEBUG

  • 트레이스

각 로그 수준의 의미에 대해 자세히 알아보려면 Logback 문서의 유효 수준을 참조하세요.

logback.xml 파일 에 다음 코드를 삽입합니다.

<configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

로거 구성이 성공적으로 이루어졌는지 테스트하려면 IDE 대신 sbt run 명령을 사용하여 다음 코드를 실행하세요.

val mongoClient = MongoClient("<connection string>")
val database: MongoDatabase = mongoClient.getDatabase("<database>")
val collection: MongoCollection[Document] = database.getCollection("<collection>")
collection.find().first().printHeadResult()

Logback 구성에 대한 자세한 내용은 Logback 매뉴얼을 참조하세요.

Log4j2은 클래스패스의 log4j2.xml 파일에서 구성을 읽습니다. 이 파일은 기본적으로 존재하지 않으므로 생성해야 합니다. 클래스패스에서 접근할 수 있는 한 log4j2.xml을 Scala 프로젝트의 어디에든 넣을 수 있습니다.

Log4j2 프레임워크는 가장 긴급한 것부터 가장 덜 긴급한 것까지 순서대로 다음과 같은 로그 수준을 정의합니다.

  • 치명적

  • 오류

  • 경고

  • 정보

  • DEBUG

  • 트레이스

  • ALL

각 로그 수준의 의미에 대해 자세히 학습하려면 Log4j2 문서에서 사용자 지정 로그 수준을(를) 참조하십시오.

log4j2.xml 파일 다음과 같이 설정합니다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

로거 구성이 성공적으로 이루어졌는지 테스트하려면 IDE 대신 sbt run 명령을 사용하여 다음 코드를 실행하세요.

val mongoClient = MongoClient("<connection string>")
val database: MongoDatabase = mongoClient.getDatabase("<database>")
val collection: MongoCollection[Document] = database.getCollection("<collection>")
collection.find().first().printHeadResult()

Log4j2 구성에 대한 자세한 내용은 Log4j2 문서의 Log4j2 구성 가이드를 참조하세요.

로그 프레임워크는 계층적인 로거 이름을 사용하여 로그 이벤트를 조직합니다. 이름 뒤의 "."가 다른 로거 이름의 접두사인 경우 로거는 다른 로거의 조상입니다. 예를 들어 grandparent 로거는 grandparent.parent 로거의 조상이며, 로거는 grandparent.parent.child 로거의 조상입니다.

다음 코드는 parent 로거와 parent.child 로거를 만듭니다. 이 때 parent 로거는 parent.child 로거의 조상입니다.

import org.slf4j.Logger
import org.slf4j.LoggerFactory
val loggerParent: Logger = LoggerFactory.getLogger("parent")
val loggerChild: Logger = LoggerFactory.getLogger("parent.child")

로거 계층은 Scala 의 클래스 계층과 비슷합니다. 로거는 상위 로거의 속성을 상속받으며 자체적으로 정의할 수도 있습니다.

Scala 드라이버에는 다음과 같은 기본 로거 이름이 포함됩니다.

  • org.mongodb.driver.authenticator: 인증

  • org.mongodb.driver.client: MongoClient 인스턴스

  • org.mongodb.driver.cluster: MongoDB 배포서버 모니터링

  • org.mongodb.driver.connection: 연결 및 연결 풀

  • org.mongodb.driver.connection.tls: TLS/SSL

  • org.mongodb.driver.operation: 자동 재시도를 포함한 작업

  • org.mongodb.driver.protocol: MongoDB 배포서버와 교환된 명령 및 응답

  • org.mongodb.driver.uri: 연결 문자열 구문 분석

  • org.mongodb.driver.management: JMX(Java Management Extensions)

다음 예시는 루트 로그어 구성을 OFF로 설정하고 org.mongodb.driver.connection 로그어 구성을 INFO로 설정하여 애플리케이션이 MongoDB 배포서버에 연결하는 것과 관련된 메시지만 로그하도록 하는 방법을 보여줍니다.

해당 프레임워크에 대한 예시 구성과 출력을 보려면 Logback 또는 Log4j2 탭을 선택합니다.

logback.xml 파일 에 다음 코드를 삽입합니다.

<configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="org.mongodb.driver.connection" level="INFO" additivity="true"/>
<root level="OFF">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

로거 구성이 성공적으로 이루어졌는지 테스트하려면 IDE 대신 sbt run 명령을 사용하여 다음 코드를 실행하세요.

val mongoClient = MongoClient("<connection string>")
val database: MongoDatabase = mongoClient.getDatabase("<database>")
val collection: MongoCollection[Document] = database.getCollection("<collection>")
collection.find().first().printHeadResult()

Logback 구성에 대한 자세한 내용은 공식 Logback 구성 가이드를 참조하세요.

log4j2.xml 파일 에 다음 코드를 삽입합니다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.mongodb.driver.connection" level="INFO"/>
<Root level="OFF">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

로거 구성이 성공적으로 이루어졌는지 테스트하려면 IDE 대신 sbt run 명령을 사용하여 다음 코드를 실행하세요.

val mongoClient = MongoClient("<connection string>")
val database: MongoDatabase = mongoClient.getDatabase("<database>")
val collection: MongoCollection[Document] = database.getCollection("<collection>")
collection.find().first().printHeadResult()

Log4j2 구성에 대한 자세한 내용은 공식 Log4j2 구성 가이드참조하세요.

applyToLoggerSettings() 및 applicationName() 메서드를 사용하여 MongoClient 인스턴스에 로깅 설정을 적용할 수 있습니다.

다음 표에서는 로거 설정에 연결하여 로깅 동작을 수정할 수 있는 방법을 설명합니다.

메서드
설명

maxDocumentLength()

단일 로그 메시지의 최대 문서 길이(문자)를 설정합니다.

기본값: 1000

다음 예시에서는 요청을 보내는 애플리케이션의 이름을 지정하고 최대 로그 메시지 길이를 5000 자로 지정합니다. IDE 대신 sbt run 명령을 사용하여 예시를 실행합니다.

val mongoClient = MongoClient(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<your connection string>"))
.applicationName("<application name>")
.applyToLoggerSettings(builder =>
builder.maxDocumentLength(5000))
.build())

자세한 내용은 MongoClientSettings.Builder API 문서를 참조하세요.