Logback 은 Java 애플리케이션을 위한 널리 사용되는 오픈 소스 로깅 프레임워크이다. 빠르고 유연하며 효율적을 설계되어 자바 애플리케이션 내에서 로깅하는 데 일반적으로 선택 된다.
Logback 은 향상된 기능과 성능으로 인해 Log4j 와 같은 이전 로깅 프레임워크를 대체하는 데 자주 사용된다.
개발 단계 : DEBUG, TRACE 레벨을 사용하여 세부 정보를 확인하고 디버깅 한다.
테스트 환경 : WARN 레벨 이상의 로그를 통해 잠재적 문제를 탐지한다.
프로덕션 환경 : INFO 레벨 이상의 로그를 사용하여 애플리케이션의 주요 이벤트를 기록하며, WARN 레벨 이상은 주요 경고와 오류를 추적한다.
로그 수준은 로그백 구성에서 중요한 역할을 한다. 로그 수준을 올바르게 설정하면 로깅을 효과적으로 관리하고 원하는 수준의 로그 메시지만 표시할 수 있다.
다음은 로그 수준을 설정하는 간단한 로그백 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" ...>
콘솔로 로그 메시지를 출력하는 콘솔 앱렌더를 정의한다.
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor" % "2.6.17",
"ch.qos.logback" % "logback-classic" % "1.2.6"
)
<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 로 설정됨
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' 를 사용하여 각 로그 수준에 해당하는 메시지를 출력할 것이다.