Quarkus 로그 설정 및 패턴 등록 방법 2단계

Quarkus는 현대적인 클라우드 네이티브 애플리케이션 개발을 위한 프레임워크로서, 효율적인 로깅 시스템을 제공합니다. 이 포스트에서는 Quarkus 로그 설정 방법과 로그 패턴을 등록하는 방법에 대해 살펴보겠습니다.

Quarkus 로그 설정과 함께 개발환경 세팅 방법은 아래 클릭!

Quarkus와 이클립스를 이용한 개발환경 세팅 5단계 가이드

1. Quarkus 로그 설정 방법

Quarkus는 기본적으로 application.properties 파일을 통해 설정을 관리합니다. 로그 관련 설정을 추가하려면 이 파일을 사용하면 됩니다.

기본 로그 레벨 설정:

quarkus.log.level=INFO

특정 카테고리에 대한 로그 레벨 설정:

quarkus.log.category."com.example".level=DEBUG

위의 설정은 com.example 패키지의 로그 레벨을 DEBUG로 설정합니다.

아래 예시

03:53:28,718 INFO  [org.hib.Version] HHH000412: Hibernate ORM core version 5.4.29.Final
03:53:28,724 INFO  [org.hib.ann.com.Version] HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
03:53:28,743 INFO  [org.hib.dia.Dialect] HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
03:53:39,000 INFO  [org.jbo.threads] JBoss Threads version 3.2.0.Final

2. 로그 패턴 등록 방법

로그 메시지의 출력 형식을 사용자 정의하려면 로그 패턴을 설정할 수 있습니다. 패턴을 정의해야 가독성 상승 합니다.

기본 로그 패턴 설정:

quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss,SSS} [%15.15t] %-5p [%-30.30c{1.}] (%-4L) : %s%e%n

적용 후 예시

__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2021-06-09 11:26:10,257 [Quarkus Main Th] WARN  [i.q.config                    ] (48  ) : Unrecognized configuration key "quarkus.native.build-image" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
2021-06-09 11:26:10,668 [Quarkus Main Th] WARN  [i.q.config                    ] (48  ) : Unrecognized configuration key "quarkus.native.build-image" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
2021-06-09 11:26:10,695 [Quarkus Main Th] INFO  [i.a.pool                      ] (66  ) : Datasource '<default>': Initial size smaller than min. Connections will be created when necessary

위의 패턴은 다음과 같은 의미를 가집니다.

  • %d{HH:mm:ss}: 시간 포맷
  • %-5p: 로그 레벨
  • [%c{2.}]: 로거 카테고리 이름
  • (%t): 스레드 이름
  • %s%e%n: 메시지 및 예외 트레이스

참고자료

출처 : 공식 홈페이지

Quarkus 로그 설정
사이트방문
SymbolSummaryDescription
%%%Renders a simple % character.
%cCategoryRenders the category name.
%CSource classRenders the source class name.[3]
%d{xxx}DateRenders a date with the given date format string, which uses the syntax defined by java.text.SimpleDateFormat.
%eExceptionRenders the thrown exception, if any.
%FSource fileRenders the source file name.[3]
%hHost nameRenders the system simple host name.
%HQualified host nameRenders the system’s fully qualified host name, which may be the same as the simple host name, depending on OS configuration.
%iProcess IDRender the current process PID.
%lSource locationRenders the source location information, which includes source file name, line number, class name, and method name.[3]
%LSource lineRenders the source line number.[3]
%mFull MessageRenders the log message plus exception (if any).
%MSource methodRenders the source method name.[3]
%nNewlineRenders the platform-specific line separator string.
%NProcess nameRender the name of the current process.
%pLevelRender the log level of the message.
%rRelative timeRender the time in milliseconds since the start of the application log.
%sSimple messageRenders just the log message, with no exception trace.
%tThread nameRender the thread name.
%t{id}Thread IDRender the thread ID.
%z{<zone name>}Time zoneSet the time zone of the output to <zone name>.
%X{<MDC property name>}Mapped Diagnostics Context ValueRenders the value from Mapped Diagnostics Context
%XMapped Diagnostics Context ValuesRenders all the values from Mapped Diagnostics Context in format {property.key=property.value}
%xNested Diagnostics context valuesRenders all the values from Nested Diagnostics Context in format {value1.value2}

3. 결론

Quarkus 로그 설정은 간단하면서도 매우 유연합니다. application.properties 파일 하나만으로 기본 설정부터 고급 설정까지 모두 관리할 수 있어, 클라우드 네이티브 애플리케이션에서 로깅 요구사항을 충족하는 데 큰 도움이 됩니다.

이제 이 애플리케이션에서 로그를 효과적으로 관리하고 출력 형식을 사용자 정의하는 방법을 알았습니다. 이를 통해 애플리케이션의 동작 상태를 더욱 정확하게 파악하고, 문제 발생 시 빠르게 대응할 수 있게 되었습니다.