Logback

Ada·2023년 12월 11일
0

자유 공부

목록 보기
15/19

설명

Logback 은 Java 애플리케이션을 위한 널리 사용되는 오픈 소스 로깅 프레임워크이다. 빠르고 유연하며 효율적을 설계되어 자바 애플리케이션 내에서 로깅하는 데 일반적으로 선택 된다.
Logback 은 향상된 기능과 성능으로 인해 Log4j 와 같은 이전 로깅 프레임워크를 대체하는 데 자주 사용된다.

로그 수준(Log Levels)

  • TRACE
    - 가장 낮은 로그 수준으로, 디버깅에 유용하다. 어플리케이션 내부의 상세 정보를 기록하는 데 사용된다.
    • 예시 : 함수 호출 스택, 변수 값 등의 상세 정보
  • DEBUG
    - 디버깅 정보를 기록하는 데 사용되며, TRACE 보다 상위 레벨이다. 애플리케이션 실행 중의 중요한 상태 정보를 포함할 수 있다.
    • 예시 : 메서드 진입/완료, 중간 계산 결과
  • INFO
    - 어플리케이션의 주요 이벤트나 상태 변경을 기록하는 데 사용된다. 일반적인 실행 정보를 기록할 때 유용하다.
    • 예시 : 서버 시작, 요청 처리 완료
  • WARN
    - 어플리케이션이 잠재적인 문제에 직면했지만, 계속 실행될 수 있는 경우에 사용된다. 예상치 못한 조건이나 경고 메시지를 기록하는 데 유용하다.
    • 예시 : 자원 부족 경고, 구식 구성 사용
  • ERROR
    - 가장 높은 로그 수준으로, 심각한 오류나 예외 사항을 나타내는 데 사용된다. 어플리케이션 실행 중에 발생한 오류를 추적하는 데 유용하다.
    • 예시 : 예외 발생, 중요한 작업 실패

로그 레벨 선택

  • 개발 단계 : DEBUG, TRACE 레벨을 사용하여 세부 정보를 확인하고 디버깅 한다.

  • 테스트 환경 : WARN 레벨 이상의 로그를 통해 잠재적 문제를 탐지한다.

  • 프로덕션 환경 : INFO 레벨 이상의 로그를 사용하여 애플리케이션의 주요 이벤트를 기록하며, WARN 레벨 이상은 주요 경고와 오류를 추적한다.

로그 수준 설정

로그 수준은 로그백 구성에서 중요한 역할을 한다. 로그 수준을 올바르게 설정하면 로깅을 효과적으로 관리하고 원하는 수준의 로그 메시지만 표시할 수 있다.

설정 예제 (XML 구성 파일)

다음은 로그 수준을 설정하는 간단한 로그백 XML 구성 파일의 예제이다.

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>
  • level="INFO" : 루트 로거의 로그 수준을 INFO로 설정한다. 이 설정은 INFO 수준 이상의 모든 로그 메시지를 기록한다.

  • <appender name="CONSOLE" ...> 콘솔로 로그 메시지를 출력하는 콘솔 앱렌더를 정의한다.

스칼라에서의 사용법

build.sbt 파일에 의존성 추가

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.6.17",
  "ch.qos.logback" % "logback-classic" % "1.2.6"
)

logback.xml 설정

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

콘솔로 로그 메시지 출력, 루트 로거의 로그 수준은 INFO 로 설정됨

Akka 액터 생성

import akka.actor.{Actor, ActorLogging}

class MyActor extends Actor with ActorLogging {
  def receive = {
    case "info" =>
      log.info("This is an info message.")
    case "debug" =>
      log.debug("This is a debug message.")
    case "error" =>
      log.error("This is an error message.")
    case _ =>
      log.warning("Received an unknown message.")
  }
}

위 코드에서 ActorLogging을 확장한 MyActor 클래스를 정의한다. 이로써 log 객체를 사용하여 로그 메시지를 기록할 수 있다.

액터 시스템 생성과 메시지 전송

import akka.actor.{ActorSystem, Props}

object Main extends App {
  val system = ActorSystem("MyActorSystem")
  val myActor = system.actorOf(Props[MyActor], "myActor")

  myActor ! "info"
  myActor ! "debug"
  myActor ! "error"
  myActor ! "unknown"

  system.terminate()
}

액터 시스템을 생성하고 'myActor' 에게 다양한 메시지를 보낸다.
'log' 를 사용하여 각 로그 수준에 해당하는 메시지를 출력할 것이다.

profile
백엔드 프로그래머

0개의 댓글